# SGTL5000 Driver [WIP]
This is a `no_std`-compatible Rust driver crate for the NXP SGTL5000 audio codec chip.
The design aims to be generic; however, the primary goal is to enable audio projects on Teensy 4.x microcontroller boards (`imxrt-hal`) using the original audio adaptor board based on this codec. The driver uses I²C to control the codec (SPI support is not planned at the moment).
The goal is to hide low-level register manipulation from the user. Instead, the driver exposes high-level control functions (e.g., mute, input select, etc.) for convenience.
## Roadmap
### Must-Have
* ✅ Add all register addresses.
* ✅ Implement the first exposed high-level method that communicates with the codec.
* Add or generate all essential register bitfields required to use the codec.
* Expose essential high-level codec controls needed for basic operation.
* Add a default initialization function to bootstrap the codec with common settings.
* Add support for on-demand features (input selection, volume control, mute, etc.).
### Nice-to-Have
* Add cross-checks to prevent invalid configurations via the driver interface (where applicable).
* Add support for integrated digital processing features (tone control, EQ, etc.).
## References
* [SGTL5000 Reference Manual](https://www.nxp.com/docs/en/data-sheet/SGTL5000.pdf)
* [Teensy Audio Adaptor Board page](https://www.pjrc.com/store/teensy3_audio.html)
* [imxrt-hal](https://github.com/imxrt-rs/imxrt-hal)