From c91a5883c31fa0f0b57aef24904b63d05b8673c8 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Dubois Date: Wed, 16 Mar 2016 17:05:59 +0000 Subject: i.MX: Rename CCM NOCLK to CLK_NONE for naming consistency. This way all CCM clock defines/enums are named CLK_XXX Reviewed-by: Peter Maydell Signed-off-by: Jean-Christophe Dubois Message-id: 8537df765c1713625c7a8b9aca4c7ca60b42e0c0.1456868959.git.jcd@tribudubois.net Signed-off-by: Peter Maydell --- include/hw/misc/imx_ccm.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/hw/misc/imx_ccm.h') diff --git a/include/hw/misc/imx_ccm.h b/include/hw/misc/imx_ccm.h index 5c4b7958bd..74e2705934 100644 --- a/include/hw/misc/imx_ccm.h +++ b/include/hw/misc/imx_ccm.h @@ -43,7 +43,7 @@ typedef struct IMXCCMState { } IMXCCMState; typedef enum { - NOCLK, + CLK_NONE, CLK_MPLL, CLK_UPLL, CLK_MCU, -- cgit 1.4.1 From f4b2add6ccc66c983258a04ded9e8e9d6ec2a731 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Dubois Date: Wed, 16 Mar 2016 17:05:59 +0000 Subject: i.MX: Remove CCM useless clock computation handling. Most clocks supported by the CCM are useless to the qemu framework. Only clocks related to timers (EPIT, GPT, PWM, WATCHDOG, ...) are usefull to QEMU code. Therefore this patch removes clock computation handling for all clocks but: * CLK_NONE, * CLK_IPG, * CLK_32k Reviewed-by: Peter Maydell Signed-off-by: Jean-Christophe Dubois Message-id: 9e7222efb349801032e60c0f6b0fbad0e5dcf648.1456868959.git.jcd@tribudubois.net Signed-off-by: Peter Maydell --- hw/misc/imx25_ccm.c | 26 -------------------------- hw/misc/imx31_ccm.c | 32 -------------------------------- include/hw/misc/imx_ccm.h | 7 ------- 3 files changed, 65 deletions(-) (limited to 'include/hw/misc/imx_ccm.h') diff --git a/hw/misc/imx25_ccm.c b/hw/misc/imx25_ccm.c index 7a29c19da4..e138fc6710 100644 --- a/hw/misc/imx25_ccm.c +++ b/hw/misc/imx25_ccm.c @@ -120,20 +120,6 @@ static uint32_t imx25_ccm_get_mpll_clk(IMXCCMState *dev) return freq; } -static uint32_t imx25_ccm_get_upll_clk(IMXCCMState *dev) -{ - uint32_t freq = 0; - IMX25CCMState *s = IMX25_CCM(dev); - - if (!EXTRACT(s->reg[IMX25_CCM_CCTL_REG], UPLL_DIS)) { - freq = imx_ccm_calc_pll(s->reg[IMX25_CCM_UPCTL_REG], CKIH_FREQ); - } - - DPRINTF("freq = %d\n", freq); - - return freq; -} - static uint32_t imx25_ccm_get_mcu_clk(IMXCCMState *dev) { uint32_t freq; @@ -184,18 +170,6 @@ static uint32_t imx25_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock) switch (clock) { case CLK_NONE: break; - case CLK_MPLL: - freq = imx25_ccm_get_mpll_clk(dev); - break; - case CLK_UPLL: - freq = imx25_ccm_get_upll_clk(dev); - break; - case CLK_MCU: - freq = imx25_ccm_get_mcu_clk(dev); - break; - case CLK_AHB: - freq = imx25_ccm_get_ahb_clk(dev); - break; case CLK_IPG: freq = imx25_ccm_get_ipg_clk(dev); break; diff --git a/hw/misc/imx31_ccm.c b/hw/misc/imx31_ccm.c index 7a8fcd2b56..a5caabb00c 100644 --- a/hw/misc/imx31_ccm.c +++ b/hw/misc/imx31_ccm.c @@ -152,32 +152,6 @@ static uint32_t imx31_ccm_get_mcu_main_clk(IMXCCMState *dev) return freq; } -static uint32_t imx31_ccm_get_mcu_clk(IMXCCMState *dev) -{ - uint32_t freq; - IMX31CCMState *s = IMX31_CCM(dev); - - freq = imx31_ccm_get_mcu_main_clk(dev) - / (1 + EXTRACT(s->reg[IMX31_CCM_PDR0_REG], MCU)); - - DPRINTF("freq = %d\n", freq); - - return freq; -} - -static uint32_t imx31_ccm_get_hsp_clk(IMXCCMState *dev) -{ - uint32_t freq; - IMX31CCMState *s = IMX31_CCM(dev); - - freq = imx31_ccm_get_mcu_main_clk(dev) - / (1 + EXTRACT(s->reg[IMX31_CCM_PDR0_REG], HSP)); - - DPRINTF("freq = %d\n", freq); - - return freq; -} - static uint32_t imx31_ccm_get_hclk_clk(IMXCCMState *dev) { uint32_t freq; @@ -211,12 +185,6 @@ static uint32_t imx31_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock) switch (clock) { case CLK_NONE: break; - case CLK_MCU: - freq = imx31_ccm_get_mcu_clk(dev); - break; - case CLK_HSP: - freq = imx31_ccm_get_hsp_clk(dev); - break; case CLK_IPG: freq = imx31_ccm_get_ipg_clk(dev); break; diff --git a/include/hw/misc/imx_ccm.h b/include/hw/misc/imx_ccm.h index 74e2705934..378b78d426 100644 --- a/include/hw/misc/imx_ccm.h +++ b/include/hw/misc/imx_ccm.h @@ -44,14 +44,7 @@ typedef struct IMXCCMState { typedef enum { CLK_NONE, - CLK_MPLL, - CLK_UPLL, - CLK_MCU, - CLK_HSP, - CLK_MAX, - CLK_AHB, CLK_IPG, - CLK_PER, CLK_32k } IMXClk; -- cgit 1.4.1 From d552f675fb313eb020c384c03307ecfb83dce1ad Mon Sep 17 00:00:00 2001 From: Jean-Christophe Dubois Date: Wed, 16 Mar 2016 17:06:00 +0000 Subject: i.MX: Add the CLK_IPG_HIGH clock EPIT, GPT and other i.MX timers are using "abstract" clocks among which a CLK_IPG_HIGH clock. On i.MX25 and i.MX31 CLK_IPG and CLK_IPG_HIGH are mapped to the same clock but on other SOC like i.MX6 they are mapped to distinct clocks. This patch add the CLK_IPG_HIGH to prepare for SOC where these 2 clocks are different. Reviewed-by: Peter Maydell Signed-off-by: Jean-Christophe Dubois Message-id: 224bf650194760284cb40630e985867e1373276a.1456868959.git.jcd@tribudubois.net Signed-off-by: Peter Maydell --- hw/misc/imx25_ccm.c | 1 + hw/misc/imx31_ccm.c | 1 + hw/timer/imx_epit.c | 8 ++++---- hw/timer/imx_gpt.c | 16 ++++++++-------- include/hw/misc/imx_ccm.h | 1 + 5 files changed, 15 insertions(+), 12 deletions(-) (limited to 'include/hw/misc/imx_ccm.h') diff --git a/hw/misc/imx25_ccm.c b/hw/misc/imx25_ccm.c index e138fc6710..225604d823 100644 --- a/hw/misc/imx25_ccm.c +++ b/hw/misc/imx25_ccm.c @@ -171,6 +171,7 @@ static uint32_t imx25_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock) case CLK_NONE: break; case CLK_IPG: + case CLK_IPG_HIGH: freq = imx25_ccm_get_ipg_clk(dev); break; case CLK_32k: diff --git a/hw/misc/imx31_ccm.c b/hw/misc/imx31_ccm.c index a5caabb00c..80c1647166 100644 --- a/hw/misc/imx31_ccm.c +++ b/hw/misc/imx31_ccm.c @@ -186,6 +186,7 @@ static uint32_t imx31_ccm_get_clock_frequency(IMXCCMState *dev, IMXClk clock) case CLK_NONE: break; case CLK_IPG: + case CLK_IPG_HIGH: freq = imx31_ccm_get_ipg_clk(dev); break; case CLK_32k: diff --git a/hw/timer/imx_epit.c b/hw/timer/imx_epit.c index 9f26ba85e5..f5836e21f4 100644 --- a/hw/timer/imx_epit.c +++ b/hw/timer/imx_epit.c @@ -52,10 +52,10 @@ static char const *imx_epit_reg_name(uint32_t reg) * These are typical. */ static const IMXClk imx_epit_clocks[] = { - CLK_NONE, /* 00 disabled */ - CLK_IPG, /* 01 ipg_clk, ~532MHz */ - CLK_IPG, /* 10 ipg_clk_highfreq */ - CLK_32k, /* 11 ipg_clk_32k -- ~32kHz */ + CLK_NONE, /* 00 disabled */ + CLK_IPG, /* 01 ipg_clk, ~532MHz */ + CLK_IPG_HIGH, /* 10 ipg_clk_highfreq */ + CLK_32k, /* 11 ipg_clk_32k -- ~32kHz */ }; /* diff --git a/hw/timer/imx_gpt.c b/hw/timer/imx_gpt.c index 40db63cabe..ab2e213a19 100644 --- a/hw/timer/imx_gpt.c +++ b/hw/timer/imx_gpt.c @@ -81,14 +81,14 @@ static const VMStateDescription vmstate_imx_timer_gpt = { }; static const IMXClk imx_gpt_clocks[] = { - CLK_NONE, /* 000 No clock source */ - CLK_IPG, /* 001 ipg_clk, 532MHz*/ - CLK_IPG, /* 010 ipg_clk_highfreq */ - CLK_NONE, /* 011 not defined */ - CLK_32k, /* 100 ipg_clk_32k */ - CLK_NONE, /* 101 not defined */ - CLK_NONE, /* 110 not defined */ - CLK_NONE, /* 111 not defined */ + CLK_NONE, /* 000 No clock source */ + CLK_IPG, /* 001 ipg_clk, 532MHz*/ + CLK_IPG_HIGH, /* 010 ipg_clk_highfreq */ + CLK_NONE, /* 011 not defined */ + CLK_32k, /* 100 ipg_clk_32k */ + CLK_NONE, /* 101 not defined */ + CLK_NONE, /* 110 not defined */ + CLK_NONE, /* 111 not defined */ }; static void imx_gpt_set_freq(IMXGPTState *s) diff --git a/include/hw/misc/imx_ccm.h b/include/hw/misc/imx_ccm.h index 378b78d426..48a7afad5e 100644 --- a/include/hw/misc/imx_ccm.h +++ b/include/hw/misc/imx_ccm.h @@ -45,6 +45,7 @@ typedef struct IMXCCMState { typedef enum { CLK_NONE, CLK_IPG, + CLK_IPG_HIGH, CLK_32k } IMXClk; -- cgit 1.4.1