From: Maksim Kozlov Date: Tue, 26 Jun 2012 17:19:21 +0000 (+0400) Subject: exynos4210_cmu: Add vmstate structure for Exynos4210ClockState X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1405^2~90 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38d03caada73f5d45229e9b554a8d7fbf7c5fdf4;p=sdk%2Femulator%2Fqemu.git exynos4210_cmu: Add vmstate structure for Exynos4210ClockState --- diff --git a/hw/exynos4210_cmu.c b/hw/exynos4210_cmu.c index 0a887ecef1..bab2ceb207 100644 --- a/hw/exynos4210_cmu.c +++ b/hw/exynos4210_cmu.c @@ -483,20 +483,21 @@ typedef struct ClockChangeEntry { void *opaque; } ClockChangeEntry; -#define TYPE_EXYNOS4210_CMU "exynos4210.cmu" +#define TYPE_EXYNOS4210_CMU "exynos4210.cmu" +#define TYPE_EXYNOS4210_CLOCK "exynos4210.clock" typedef struct { const char *name; - Exynos4210Clock id; + int32_t id; uint64_t rate; /* Current source clock */ - Exynos4210Clock src_id; + int32_t src_id; /* * Available sources. Their order must correspond to CLK_SRC_ register */ - Exynos4210Clock src_ids[SOURCES_NUMBER]; + int32_t src_ids[SOURCES_NUMBER]; uint32_t src_reg; /* Offset of CLK_SRC_<*> register */ uint32_t div_reg; /* Offset of CLK_DIV_<*> register */ @@ -514,7 +515,7 @@ typedef struct { uint8_t div_shift; /* Which CMU controls this clock */ - Exynos4210Cmu cmu_id; + int32_t cmu_id; QTAILQ_HEAD(, ClockChangeEntry) clock_change_handler; @@ -1349,6 +1350,22 @@ static void exynos4210_cmu_reset(DeviceState *dev) PRINT_DEBUG("CMU %d reset completed\n", s->cmu_id); } +static const VMStateDescription vmstate_exynos4210_clock = { + .name = TYPE_EXYNOS4210_CLOCK, + .version_id = 1, + .minimum_version_id = 1, + .minimum_version_id_old = 1, + .fields = (VMStateField[]) { + VMSTATE_UINT64(rate, Exynos4210ClockState), + VMSTATE_INT32(src_id, Exynos4210ClockState), + VMSTATE_INT32_ARRAY(src_ids, Exynos4210ClockState, SOURCES_NUMBER), + VMSTATE_UINT32(src_reg, Exynos4210ClockState), + VMSTATE_UINT32(div_reg, Exynos4210ClockState), + VMSTATE_UINT8(mux_shift, Exynos4210ClockState), + VMSTATE_UINT8(div_shift, Exynos4210ClockState), + VMSTATE_END_OF_LIST() + } +}; static const VMStateDescription vmstate_exynos4210_cmu = { .name = TYPE_EXYNOS4210_CMU, @@ -1356,11 +1373,12 @@ static const VMStateDescription vmstate_exynos4210_cmu = { .minimum_version_id = 1, .minimum_version_id_old = 1, .fields = (VMStateField[]) { - /* - * TODO: Maybe we should save Exynos4210ClockState structs as well - */ VMSTATE_UINT32_ARRAY(reg, Exynos4210CmuState, EXYNOS4210_CMU_REGS_MEM_SIZE / sizeof(uint32_t)), + VMSTATE_STRUCT_VARRAY_INT32(clock, Exynos4210CmuState, + clock_number, 0, + vmstate_exynos4210_clock, + Exynos4210ClockState), VMSTATE_END_OF_LIST() } }; @@ -1425,7 +1443,7 @@ static int exynos4210_cmu_init(SysBusDevice *dev) } s->clock = - (Exynos4210ClockState *)g_malloc0(n * sizeof(Exynos4210ClockState)); + (Exynos4210ClockState *)g_malloc0(n * sizeof(Exynos4210ClockState)); for (i = 1, s->clock_number = 0; i < EXYNOS4210_CLOCKS_NUMBER; i++) { @@ -1441,7 +1459,6 @@ static int exynos4210_cmu_init(SysBusDevice *dev) exynos4210_cmu_path[s->cmu_id]); s->clock_number++; - } }