Message ID | 20210121190622.22000-15-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Convert CMSDK timer, watchdog, dualtimer to Clock framework | expand |
On 1/21/21 8:06 PM, Peter Maydell wrote: > Create and connect the two clocks needed by the ARMSSE. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > hw/arm/mps2-tz.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
On 19:06 Thu 21 Jan , Peter Maydell wrote: > Create and connect the two clocks needed by the ARMSSE. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Luc Michel <luc@lmichel.fr> > --- > hw/arm/mps2-tz.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c > index 6a9eed9022a..7acdf490f28 100644 > --- a/hw/arm/mps2-tz.c > +++ b/hw/arm/mps2-tz.c > @@ -62,6 +62,7 @@ > #include "hw/net/lan9118.h" > #include "net/net.h" > #include "hw/core/split-irq.h" > +#include "hw/qdev-clock.h" > #include "qom/object.h" > > #define MPS2TZ_NUMIRQ 92 > @@ -100,6 +101,8 @@ struct MPS2TZMachineState { > qemu_or_irq uart_irq_orgate; > DeviceState *lan9118; > SplitIRQ cpu_irq_splitter[MPS2TZ_NUMIRQ]; > + Clock *sysclk; > + Clock *s32kclk; > }; > > #define TYPE_MPS2TZ_MACHINE "mps2tz" > @@ -110,6 +113,8 @@ OBJECT_DECLARE_TYPE(MPS2TZMachineState, MPS2TZMachineClass, MPS2TZ_MACHINE) > > /* Main SYSCLK frequency in Hz */ > #define SYSCLK_FRQ 20000000 > +/* Slow 32Khz S32KCLK frequency in Hz */ > +#define S32KCLK_FRQ (32 * 1000) > > /* Create an alias of an entire original MemoryRegion @orig > * located at @base in the memory map. > @@ -396,6 +401,12 @@ static void mps2tz_common_init(MachineState *machine) > exit(EXIT_FAILURE); > } > > + /* These clocks don't need migration because they are fixed-frequency */ > + mms->sysclk = clock_new(OBJECT(machine), "SYSCLK"); > + clock_set_hz(mms->sysclk, SYSCLK_FRQ); > + mms->s32kclk = clock_new(OBJECT(machine), "S32KCLK"); > + clock_set_hz(mms->s32kclk, S32KCLK_FRQ); > + > object_initialize_child(OBJECT(machine), TYPE_IOTKIT, &mms->iotkit, > mmc->armsse_type); > iotkitdev = DEVICE(&mms->iotkit); > @@ -403,6 +414,8 @@ static void mps2tz_common_init(MachineState *machine) > OBJECT(system_memory), &error_abort); > qdev_prop_set_uint32(iotkitdev, "EXP_NUMIRQ", MPS2TZ_NUMIRQ); > qdev_prop_set_uint32(iotkitdev, "MAINCLK_FRQ", SYSCLK_FRQ); > + qdev_connect_clock_in(iotkitdev, "MAINCLK", mms->sysclk); > + qdev_connect_clock_in(iotkitdev, "S32KCLK", mms->s32kclk); > sysbus_realize(SYS_BUS_DEVICE(&mms->iotkit), &error_fatal); > > /* > -- > 2.20.1 > --
diff --git a/hw/arm/mps2-tz.c b/hw/arm/mps2-tz.c index 6a9eed9022a..7acdf490f28 100644 --- a/hw/arm/mps2-tz.c +++ b/hw/arm/mps2-tz.c @@ -62,6 +62,7 @@ #include "hw/net/lan9118.h" #include "net/net.h" #include "hw/core/split-irq.h" +#include "hw/qdev-clock.h" #include "qom/object.h" #define MPS2TZ_NUMIRQ 92 @@ -100,6 +101,8 @@ struct MPS2TZMachineState { qemu_or_irq uart_irq_orgate; DeviceState *lan9118; SplitIRQ cpu_irq_splitter[MPS2TZ_NUMIRQ]; + Clock *sysclk; + Clock *s32kclk; }; #define TYPE_MPS2TZ_MACHINE "mps2tz" @@ -110,6 +113,8 @@ OBJECT_DECLARE_TYPE(MPS2TZMachineState, MPS2TZMachineClass, MPS2TZ_MACHINE) /* Main SYSCLK frequency in Hz */ #define SYSCLK_FRQ 20000000 +/* Slow 32Khz S32KCLK frequency in Hz */ +#define S32KCLK_FRQ (32 * 1000) /* Create an alias of an entire original MemoryRegion @orig * located at @base in the memory map. @@ -396,6 +401,12 @@ static void mps2tz_common_init(MachineState *machine) exit(EXIT_FAILURE); } + /* These clocks don't need migration because they are fixed-frequency */ + mms->sysclk = clock_new(OBJECT(machine), "SYSCLK"); + clock_set_hz(mms->sysclk, SYSCLK_FRQ); + mms->s32kclk = clock_new(OBJECT(machine), "S32KCLK"); + clock_set_hz(mms->s32kclk, S32KCLK_FRQ); + object_initialize_child(OBJECT(machine), TYPE_IOTKIT, &mms->iotkit, mmc->armsse_type); iotkitdev = DEVICE(&mms->iotkit); @@ -403,6 +414,8 @@ static void mps2tz_common_init(MachineState *machine) OBJECT(system_memory), &error_abort); qdev_prop_set_uint32(iotkitdev, "EXP_NUMIRQ", MPS2TZ_NUMIRQ); qdev_prop_set_uint32(iotkitdev, "MAINCLK_FRQ", SYSCLK_FRQ); + qdev_connect_clock_in(iotkitdev, "MAINCLK", mms->sysclk); + qdev_connect_clock_in(iotkitdev, "S32KCLK", mms->s32kclk); sysbus_realize(SYS_BUS_DEVICE(&mms->iotkit), &error_fatal); /*
Create and connect the two clocks needed by the ARMSSE. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- hw/arm/mps2-tz.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)