On 01/15/2018 10:37 PM, Andrey Smirnov wrote: > Add minimal code needed to allow upstream Linux guest to boot. > > Cc: Peter Maydell <peter.mayd...@linaro.org> > Cc: Jason Wang <jasow...@redhat.com> > Cc: Philippe Mathieu-Daudé <f4...@amsat.org> > Cc: qemu-devel@nongnu.org > Cc: qemu-...@nongnu.org > Cc: yurov...@gmail.com > Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com> > --- > hw/timer/imx_gpt.c | 25 +++++++++++++++++++++++++ > include/hw/timer/imx_gpt.h | 1 + > 2 files changed, 26 insertions(+) > > diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c > index 4b9b54bf2e..65e4ee6bcf 100644 > --- a/hw/timer/imx_gpt.c > +++ b/hw/timer/imx_gpt.c > @@ -113,6 +113,17 @@ static const IMXClk imx6_gpt_clocks[] = { > CLK_HIGH, /* 111 reference clock */ > }; > > +static const IMXClk imx7_gpt_clocks[] = { > + CLK_NONE, /* 000 No clock source */ > + CLK_IPG, /* 001 ipg_clk, 532MHz*/ > + CLK_IPG_HIGH, /* 010 ipg_clk_highfreq */ > + CLK_EXT, /* 011 External clock */ > + CLK_32k, /* 100 ipg_clk_32k */ > + CLK_HIGH, /* 101 reference clock */ > + CLK_NONE, /* 110 not defined */ > + CLK_NONE, /* 111 not defined */ > +}; > + > static void imx_gpt_set_freq(IMXGPTState *s) > { > uint32_t clksrc = extract32(s->cr, GPT_CR_CLKSRC_SHIFT, 3); > @@ -512,6 +523,13 @@ static void imx6_gpt_init(Object *obj) > s->clocks = imx6_gpt_clocks; > } > > +static void imx7_gpt_init(Object *obj) > +{ > + IMXGPTState *s = IMX_GPT(obj); > + > + s->clocks = imx7_gpt_clocks; > +} > + > static const TypeInfo imx25_gpt_info = { > .name = TYPE_IMX25_GPT, > .parent = TYPE_SYS_BUS_DEVICE, > @@ -532,11 +550,18 @@ static const TypeInfo imx6_gpt_info = { > .instance_init = imx6_gpt_init, > }; > > +static const TypeInfo imx7_gpt_info = { > + .name = TYPE_IMX7_GPT, > + .parent = TYPE_IMX25_GPT,
ideally there should be an abstract TYPE_IMX_GPT you'd use as parent rather than the TYPE_IMX25_GPT, anyway out of the scope of this series. Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> > + .instance_init = imx7_gpt_init, > +}; > + > static void imx_gpt_register_types(void) > { > type_register_static(&imx25_gpt_info); > type_register_static(&imx31_gpt_info); > type_register_static(&imx6_gpt_info); > + type_register_static(&imx7_gpt_info); > } > > type_init(imx_gpt_register_types) > diff --git a/include/hw/timer/imx_gpt.h b/include/hw/timer/imx_gpt.h > index eac59b2a70..20ccb327c4 100644 > --- a/include/hw/timer/imx_gpt.h > +++ b/include/hw/timer/imx_gpt.h > @@ -77,6 +77,7 @@ > #define TYPE_IMX25_GPT "imx25.gpt" > #define TYPE_IMX31_GPT "imx31.gpt" > #define TYPE_IMX6_GPT "imx6.gpt" > +#define TYPE_IMX7_GPT "imx7.gpt" > > #define TYPE_IMX_GPT TYPE_IMX25_GPT > >