mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
hw/misc: Allwinner-A10 Clock Controller Module Emulation
During SPL boot several Clock Controller Module (CCM) registers are read, most important are PLL and Tuning, as well as divisor registers. This patch adds these registers and initializes reset values from user's guide. Signed-off-by: Strahinja Jankovic <strahinja.p.jankovic@gmail.com> Reviewed-by: Niek Linnenbank <nieklinnenbank@gmail.com> Message-id: 20221226220303.14420-2-strahinja.p.jankovic@gmail.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
ee5bffa9fc
commit
423ec28bb8
7 changed files with 305 additions and 0 deletions
|
@ -323,6 +323,7 @@ config ALLWINNER_A10
|
|||
select AHCI
|
||||
select ALLWINNER_A10_PIT
|
||||
select ALLWINNER_A10_PIC
|
||||
select ALLWINNER_A10_CCM
|
||||
select ALLWINNER_EMAC
|
||||
select SERIAL
|
||||
select UNIMP
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "hw/usb/hcd-ohci.h"
|
||||
|
||||
#define AW_A10_MMC0_BASE 0x01c0f000
|
||||
#define AW_A10_CCM_BASE 0x01c20000
|
||||
#define AW_A10_PIC_REG_BASE 0x01c20400
|
||||
#define AW_A10_PIT_REG_BASE 0x01c20c00
|
||||
#define AW_A10_UART0_REG_BASE 0x01c28000
|
||||
|
@ -46,6 +47,8 @@ static void aw_a10_init(Object *obj)
|
|||
|
||||
object_initialize_child(obj, "timer", &s->timer, TYPE_AW_A10_PIT);
|
||||
|
||||
object_initialize_child(obj, "ccm", &s->ccm, TYPE_AW_A10_CCM);
|
||||
|
||||
object_initialize_child(obj, "emac", &s->emac, TYPE_AW_EMAC);
|
||||
|
||||
object_initialize_child(obj, "sata", &s->sata, TYPE_ALLWINNER_AHCI);
|
||||
|
@ -103,6 +106,10 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
|||
memory_region_add_subregion(get_system_memory(), 0x00000000, &s->sram_a);
|
||||
create_unimplemented_device("a10-sram-ctrl", 0x01c00000, 4 * KiB);
|
||||
|
||||
/* Clock Control Module */
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ccm), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, AW_A10_CCM_BASE);
|
||||
|
||||
/* FIXME use qdev NIC properties instead of nd_table[] */
|
||||
if (nd_table[0].used) {
|
||||
qemu_check_nic_model(&nd_table[0], TYPE_AW_EMAC);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue