Early booting
=============
The HAL sets up the muxes (both pin and clock) for early booting itself, with no function calls. This is because the first portion of the HAL is loaded from the boot flash by the boot loader and the rest of the HAL isn't in memory yet.
Specifically this is
 * The main DPLL's (Per, Core, MPU, DDR) - might as well boot at a decent speed
 * UART pins - for debugging
 * QSPI pins - to load the rest of the image in in 4 bit mode

Policy
======
If a pin or clock is fixed due to hardware (for example the pin is wired to only one thing on the PCB, or the clock is limited because of the chip it is wired to) then that pin or clock is set up by the HAL.

Pins or clocks that change at run time (for example which pins UART debug comes out on or the audio sampling clock) then that pin or clock is the responsibility of the device. That might be a HAL device, or a driver in a module.