hw/misc/bcm2835_cprman: add a PLL skeleton implementation
commit1e986e25d03c0d579843c4d3e2915b2f4ac8e47f
authorLuc Michel <luc@lmichel.fr>
Sat, 10 Oct 2020 13:57:50 +0000 (10 15:57 +0200)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 27 Oct 2020 11:10:44 +0000 (27 11:10 +0000)
tree33dbff2271cbb2637316ef1e486dcb5eaa86729b
parentfc14176ba23de1386d8172d86a8006d9f8a555fc
hw/misc/bcm2835_cprman: add a PLL skeleton implementation

There are 5 PLLs in the CPRMAN, namely PLL A, C, D, H and B. All of them
take the xosc clock as input and produce a new clock.

This commit adds a skeleton implementation for the PLLs as sub-devices
of the CPRMAN. The PLLs are instantiated and connected internally to the
main oscillator.

Each PLL has 6 registers : CM, A2W_CTRL, A2W_ANA[0,1,2,3], A2W_FRAC. A
write to any of them triggers a call to the (not yet implemented)
pll_update function.

If the main oscillator changes frequency, an update is also triggered.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Luc Michel <luc@lmichel.fr>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/misc/bcm2835_cprman.c
include/hw/misc/bcm2835_cprman.h
include/hw/misc/bcm2835_cprman_internals.h