i.MX: Add i.MX7 GPT variant
Add minimal code needed to allow upstream Linux guest to boot. Cc: Peter Maydell <peter.maydell@linaro.org> Cc: Jason Wang <jasowang@redhat.com> Cc: Philippe Mathieu-Daudé <f4bug@amsat.org> Cc: Marcel Apfelbaum <marcel.apfelbaum@zoho.com> Cc: Michael S. Tsirkin <mst@redhat.com> Cc: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Cc: yurovsky@gmail.com Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									0999e87fa5
								
							
						
					
					
						commit
						a62bf59fd9
					
				@ -113,6 +113,17 @@ static const IMXClk imx6_gpt_clocks[] = {
 | 
				
			|||||||
    CLK_HIGH,      /* 111 reference clock */
 | 
					    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)
 | 
					static void imx_gpt_set_freq(IMXGPTState *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    uint32_t clksrc = extract32(s->cr, GPT_CR_CLKSRC_SHIFT, 3);
 | 
					    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;
 | 
					    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 = {
 | 
					static const TypeInfo imx25_gpt_info = {
 | 
				
			||||||
    .name = TYPE_IMX25_GPT,
 | 
					    .name = TYPE_IMX25_GPT,
 | 
				
			||||||
    .parent = TYPE_SYS_BUS_DEVICE,
 | 
					    .parent = TYPE_SYS_BUS_DEVICE,
 | 
				
			||||||
@ -532,11 +550,18 @@ static const TypeInfo imx6_gpt_info = {
 | 
				
			|||||||
    .instance_init = imx6_gpt_init,
 | 
					    .instance_init = imx6_gpt_init,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const TypeInfo imx7_gpt_info = {
 | 
				
			||||||
 | 
					    .name = TYPE_IMX7_GPT,
 | 
				
			||||||
 | 
					    .parent = TYPE_IMX25_GPT,
 | 
				
			||||||
 | 
					    .instance_init = imx7_gpt_init,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void imx_gpt_register_types(void)
 | 
					static void imx_gpt_register_types(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    type_register_static(&imx25_gpt_info);
 | 
					    type_register_static(&imx25_gpt_info);
 | 
				
			||||||
    type_register_static(&imx31_gpt_info);
 | 
					    type_register_static(&imx31_gpt_info);
 | 
				
			||||||
    type_register_static(&imx6_gpt_info);
 | 
					    type_register_static(&imx6_gpt_info);
 | 
				
			||||||
 | 
					    type_register_static(&imx7_gpt_info);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type_init(imx_gpt_register_types)
 | 
					type_init(imx_gpt_register_types)
 | 
				
			||||||
 | 
				
			|||||||
@ -77,6 +77,7 @@
 | 
				
			|||||||
#define TYPE_IMX25_GPT "imx25.gpt"
 | 
					#define TYPE_IMX25_GPT "imx25.gpt"
 | 
				
			||||||
#define TYPE_IMX31_GPT "imx31.gpt"
 | 
					#define TYPE_IMX31_GPT "imx31.gpt"
 | 
				
			||||||
#define TYPE_IMX6_GPT "imx6.gpt"
 | 
					#define TYPE_IMX6_GPT "imx6.gpt"
 | 
				
			||||||
 | 
					#define TYPE_IMX7_GPT "imx7.gpt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TYPE_IMX_GPT TYPE_IMX25_GPT
 | 
					#define TYPE_IMX_GPT TYPE_IMX25_GPT
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user