[PATCH 4/4] arm: Create the cpufreq device

2020-02-12 Thread Ying Fang
Add the cpufreq device to arm64 virt machine

Signed-off-by: Heyi Guo 
Signed-off-by: Ying Fang 
---
 default-configs/aarch64-softmmu.mak |  1 +
 hw/acpi/Kconfig |  4 
 hw/arm/virt.c   | 13 +
 3 files changed, 18 insertions(+)

diff --git a/default-configs/aarch64-softmmu.mak 
b/default-configs/aarch64-softmmu.mak
index 958b1e08e4..0a030e853f 100644
--- a/default-configs/aarch64-softmmu.mak
+++ b/default-configs/aarch64-softmmu.mak
@@ -6,3 +6,4 @@ include arm-softmmu.mak
 CONFIG_XLNX_ZYNQMP_ARM=y
 CONFIG_XLNX_VERSAL=y
 CONFIG_SBSA_REF=y
+CONFIG_CPUFREQ=y
diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig
index 54209c6f2f..7d8aa58492 100644
--- a/hw/acpi/Kconfig
+++ b/hw/acpi/Kconfig
@@ -38,3 +38,7 @@ config ACPI_VMGENID
 depends on PC
 
 config ACPI_HW_REDUCED
+
+config CPUFREQ
+bool
+default y
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index ed9dc38b60..53638f9557 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -764,6 +764,17 @@ static void create_uart(const VirtMachineState *vms, int 
uart,
 g_free(nodename);
 }
 
+static void create_cpufreq(const VirtMachineState *vms, MemoryRegion *mem)
+{
+hwaddr base = vms->memmap[VIRT_CPUFREQ].base;
+DeviceState *dev = qdev_create(NULL, "cpufreq");
+SysBusDevice *s = SYS_BUS_DEVICE(dev);
+
+qdev_init_nofail(dev);
+memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0));
+}
+
+
 static void create_rtc(const VirtMachineState *vms)
 {
 char *nodename;
@@ -1723,6 +1734,8 @@ static void machvirt_init(MachineState *machine)
 
 create_uart(vms, VIRT_UART, sysmem, serial_hd(0));
 
+create_cpufreq(vms, sysmem);
+
 if (vms->secure) {
 create_secure_ram(vms, secure_sysmem);
 create_uart(vms, VIRT_SECURE_UART, secure_sysmem, serial_hd(1));
-- 
2.19.1





[PATCH 4/4] arm: Create the cpufreq device

2020-02-12 Thread fangying1
From: Ying Fang 

Signed-off-by: Heyi Guo 
Signed-off-by: Ying Fang 
---
 default-configs/aarch64-softmmu.mak |  1 +
 hw/acpi/Kconfig |  4 
 hw/arm/virt.c   | 13 +
 3 files changed, 18 insertions(+)

diff --git a/default-configs/aarch64-softmmu.mak 
b/default-configs/aarch64-softmmu.mak
index 958b1e08e4..0a030e853f 100644
--- a/default-configs/aarch64-softmmu.mak
+++ b/default-configs/aarch64-softmmu.mak
@@ -6,3 +6,4 @@ include arm-softmmu.mak
 CONFIG_XLNX_ZYNQMP_ARM=y
 CONFIG_XLNX_VERSAL=y
 CONFIG_SBSA_REF=y
+CONFIG_CPUFREQ=y
diff --git a/hw/acpi/Kconfig b/hw/acpi/Kconfig
index 54209c6f2f..7d8aa58492 100644
--- a/hw/acpi/Kconfig
+++ b/hw/acpi/Kconfig
@@ -38,3 +38,7 @@ config ACPI_VMGENID
 depends on PC
 
 config ACPI_HW_REDUCED
+
+config CPUFREQ
+bool
+default y
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index ed9dc38b60..53638f9557 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -764,6 +764,17 @@ static void create_uart(const VirtMachineState *vms, int 
uart,
 g_free(nodename);
 }
 
+static void create_cpufreq(const VirtMachineState *vms, MemoryRegion *mem)
+{
+hwaddr base = vms->memmap[VIRT_CPUFREQ].base;
+DeviceState *dev = qdev_create(NULL, "cpufreq");
+SysBusDevice *s = SYS_BUS_DEVICE(dev);
+
+qdev_init_nofail(dev);
+memory_region_add_subregion(mem, base, sysbus_mmio_get_region(s, 0));
+}
+
+
 static void create_rtc(const VirtMachineState *vms)
 {
 char *nodename;
@@ -1723,6 +1734,8 @@ static void machvirt_init(MachineState *machine)
 
 create_uart(vms, VIRT_UART, sysmem, serial_hd(0));
 
+create_cpufreq(vms, sysmem);
+
 if (vms->secure) {
 create_secure_ram(vms, secure_sysmem);
 create_uart(vms, VIRT_SECURE_UART, secure_sysmem, serial_hd(1));
-- 
2.19.1