feat: vos0, system clock at 480 MHz
chore: split main functions
fix: ability to change pll vcosel, disable pll outputs
feat: implement fmc sdram control
feat: implement clocks enabling
feat: implement cdc application layer, fix enumeration
fix: usb should not rewrite DIEPCTL bits
feat: add rx data callback, increase tx fifo size
fix: make queue thread safe
fix: ensure register access are inline
fix: correctly send functional descriptor
The functional descriptor was not sent correctly,
specifically, it was pointed to its address,
instead of the pointer itself. That meant bunch
of irrelevant stuff was sent instead.
feat: use task_result to indicate blocking
There should be no spin loops inside of the
interrupts, so this change removes them,
and instead uses a result system that has
WOULD_BLOCK result. When this result is returned,
it is expected there was no side-effect and the
function can safely be reran later.
feat: implement enumeration fully
chore: update pin, exti, delay
fix: fifo has to be volatile
docs: add documentation comments to most functions
feat: implement usb devicd cdc descriptors, init, setup
feat: move all sending instructions to generic send functions