i.MX6UL: Add a specific GPT timer instance for the i.MX6UL
The i.MX6UL doesn't support CLK_HIGH ou CLK_HIGH_DIV clock source. Signed-off-by: Jean-Christophe Dubois <jcd@tribudubois.net> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
111c4c49c3
commit
a1e03956f4
@ -81,7 +81,7 @@ static void fsl_imx6ul_init(Object *obj)
|
||||
*/
|
||||
for (i = 0; i < FSL_IMX6UL_NUM_GPTS; i++) {
|
||||
snprintf(name, NAME_SIZE, "gpt%d", i);
|
||||
object_initialize_child(obj, name, &s->gpt[i], TYPE_IMX7_GPT);
|
||||
object_initialize_child(obj, name, &s->gpt[i], TYPE_IMX6UL_GPT);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -522,12 +522,6 @@ static uint32_t imx6ul_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock)
|
||||
case CLK_32k:
|
||||
freq = CKIL_FREQ;
|
||||
break;
|
||||
case CLK_HIGH:
|
||||
freq = CKIH_FREQ;
|
||||
break;
|
||||
case CLK_HIGH_DIV:
|
||||
freq = CKIH_FREQ / 8;
|
||||
break;
|
||||
default:
|
||||
qemu_log_mask(LOG_GUEST_ERROR, "[%s]%s: unsupported clock %d\n",
|
||||
TYPE_IMX6UL_CCM, __func__, clock);
|
||||
|
@ -115,6 +115,17 @@ static const IMXClk imx6_gpt_clocks[] = {
|
||||
CLK_HIGH, /* 111 reference clock */
|
||||
};
|
||||
|
||||
static const IMXClk imx6ul_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_NONE, /* 101 not defined */
|
||||
CLK_NONE, /* 110 not defined */
|
||||
CLK_NONE, /* 111 not defined */
|
||||
};
|
||||
|
||||
static const IMXClk imx7_gpt_clocks[] = {
|
||||
CLK_NONE, /* 000 No clock source */
|
||||
CLK_IPG, /* 001 ipg_clk, 532MHz*/
|
||||
@ -539,6 +550,13 @@ static void imx6_gpt_init(Object *obj)
|
||||
s->clocks = imx6_gpt_clocks;
|
||||
}
|
||||
|
||||
static void imx6ul_gpt_init(Object *obj)
|
||||
{
|
||||
IMXGPTState *s = IMX_GPT(obj);
|
||||
|
||||
s->clocks = imx6ul_gpt_clocks;
|
||||
}
|
||||
|
||||
static void imx7_gpt_init(Object *obj)
|
||||
{
|
||||
IMXGPTState *s = IMX_GPT(obj);
|
||||
@ -566,6 +584,12 @@ static const TypeInfo imx6_gpt_info = {
|
||||
.instance_init = imx6_gpt_init,
|
||||
};
|
||||
|
||||
static const TypeInfo imx6ul_gpt_info = {
|
||||
.name = TYPE_IMX6UL_GPT,
|
||||
.parent = TYPE_IMX25_GPT,
|
||||
.instance_init = imx6ul_gpt_init,
|
||||
};
|
||||
|
||||
static const TypeInfo imx7_gpt_info = {
|
||||
.name = TYPE_IMX7_GPT,
|
||||
.parent = TYPE_IMX25_GPT,
|
||||
@ -577,6 +601,7 @@ 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(&imx6ul_gpt_info);
|
||||
type_register_static(&imx7_gpt_info);
|
||||
}
|
||||
|
||||
|
@ -78,6 +78,7 @@
|
||||
#define TYPE_IMX25_GPT "imx25.gpt"
|
||||
#define TYPE_IMX31_GPT "imx31.gpt"
|
||||
#define TYPE_IMX6_GPT "imx6.gpt"
|
||||
#define TYPE_IMX6UL_GPT "imx6ul.gpt"
|
||||
#define TYPE_IMX7_GPT "imx7.gpt"
|
||||
|
||||
#define TYPE_IMX_GPT TYPE_IMX25_GPT
|
||||
|
Loading…
Reference in New Issue
Block a user