mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 08:13:54 -06:00
hw/misc/bcm2835_cprman: implement PLLs behaviour
The CPRMAN PLLs generate a clock based on a prescaler, a multiplier and a divider. The prescaler doubles the parent (xosc) frequency, then the multiplier/divider are applied. The multiplier has an integer and a fractional part. This commit also implements the CPRMAN CM_LOCK register. This register reports which PLL is currently locked. We consider a PLL has being locked as soon as it is enabled (on real hardware, there is a delay after turning a PLL on, for it to stabilize). 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>
This commit is contained in:
parent
1e986e25d0
commit
6d2b874cf1
2 changed files with 71 additions and 1 deletions
|
@ -100,6 +100,14 @@ REG32(A2W_PLLD_FRAC, 0x1240)
|
|||
REG32(A2W_PLLH_FRAC, 0x1260)
|
||||
REG32(A2W_PLLB_FRAC, 0x12e0)
|
||||
|
||||
/* misc registers */
|
||||
REG32(CM_LOCK, 0x114)
|
||||
FIELD(CM_LOCK, FLOCKH, 12, 1)
|
||||
FIELD(CM_LOCK, FLOCKD, 11, 1)
|
||||
FIELD(CM_LOCK, FLOCKC, 10, 1)
|
||||
FIELD(CM_LOCK, FLOCKB, 9, 1)
|
||||
FIELD(CM_LOCK, FLOCKA, 8, 1)
|
||||
|
||||
/*
|
||||
* This field is common to all registers. Each register write value must match
|
||||
* the CPRMAN_PASSWORD magic value in its 8 MSB.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue