imx: mx6: add more entry for mxc_ccm_reg
PATCH v2 1/2 imx: mx6: add more entry for mxc_ccm_reg
From: Peng Fan <[email protected]>
Add more entries for structure mxc_ccm_reg.
---
Changes V2:
Address Eric'c comments. Add Comments and rename registers from PMU with prefix pmu.
arch/arm/include/asm/arch-mx6/crm_regs.h | 91 ++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+)
arch/arm/include/asm/arch-mx6/crm_regs.h +91 -0
@@ -103,6 +103,97 @@ struct mxc_ccm_reg {u32 analog_pfd_528_set;u32 analog_pfd_528_clr;u32 analog_pfd_528_tog; +/* PMU Memory Map/Register Definition */ +u32 pmu_reg_1p1; +u32 pmu_reg_1p1_set; +u32 pmu_reg_1p1_clr; +u32 pmu_reg_1p1_tog; +u32 pmu_reg_3p0; +u32 pmu_reg_3p0_set; +u32 pmu_reg_3p0_clr; +u32 pmu_reg_3p0_tog; +u32 pmu_reg_2p5; +u32 pmu_reg_2p5_set; +u32 pmu_reg_2p5_clr; +u32 pmu_reg_2p5_tog; +u32 pmu_reg_core; +u32 pmu_reg_core_set; +u32 pmu_reg_core_clr; +u32 pmu_reg_core_tog; +u32 pmu_misc0; +u32 pmu_misc0_set; +u32 pmu_misc0_clr; +u32 pmu_misc0_tog; +u32 pmu_misc1; +u32 pmu_misc1_set; +u32 pmu_misc1_clr; +u32 pmu_misc1_tog; +u32 pmu_misc2; +u32 pmu_misc2_set; +u32 pmu_misc2_clr; +u32 pmu_misc2_tog; +/* TEMPMON Memory Map/Register Definition */ +u32 tempsense0; +u32 tempsense0_set; +u32 tempsense0_clr; +u32 tempsense0_tog; +u32 tempsense1; +u32 tempsense1_set; +u32 tempsense1_clr; +u32 tempsense1_tog; +/* USB Analog Memory Map/Register Definition */ +u32 usb1_vbus_detect; +u32 usb1_vbus_detect_set; +u32 usb1_vbus_detect_clr; +u32 usb1_vbus_detect_tog; +u32 usb1_chrg_detect; +u32 usb1_chrg_detect_set; +u32 usb1_chrg_detect_clr; +u32 usb1_chrg_detect_tog; +u32 usb1_vbus_det_stat; +u32 usb1_vbus_det_stat_set; +u32 usb1_vbus_det_stat_clr; +u32 usb1_vbus_det_stat_tog; +u32 usb1_chrg_det_stat; +u32 usb1_chrg_det_stat_set; +u32 usb1_chrg_det_stat_clr; +u32 usb1_chrg_det_stat_tog; +u32 usb1_loopback; +u32 usb1_loopback_set; +u32 usb1_loopback_clr; +u32 usb1_loopback_tog; +u32 usb1_misc; +u32 usb1_misc_set; +u32 usb1_misc_clr; +u32 usb1_misc_tog; +u32 usb2_vbus_detect; +u32 usb2_vbus_detect_set; +u32 usb2_vbus_detect_clr; +u32 usb2_vbus_detect_tog; +u32 usb2_chrg_detect; +u32 usb2_chrg_detect_set; +u32 usb2_chrg_detect_clr; +u32 usb2_chrg_detect_tog; +u32 usb2_vbus_det_stat; +u32 usb2_vbus_det_stat_set; +u32 usb2_vbus_det_stat_clr; +u32 usb2_vbus_det_stat_tog; +u32 usb2_chrg_det_stat; +u32 usb2_chrg_det_stat_set; +u32 usb2_chrg_det_stat_clr; +u32 usb2_chrg_det_stat_tog; +u32 usb2_loopback; +u32 usb2_loopback_set; +u32 usb2_loopback_clr; +u32 usb2_loopback_tog; +u32 usb2_misc; +u32 usb2_misc_set; +u32 usb2_misc_clr; +u32 usb2_misc_tog; +u32 digprog; +u32 reserved1[7 ]; +/* For i.MX 6SoloLite */ + u32 digprog_sololite; };#endif
Signature · 1 line
2.6.2
PATCH v2 2/2 imx: mx6ul/sx: fix mmdc_ch0 clk calculation
From: Peng Fan <[email protected]>
Check "Figure 19-5. BUS clock generation" of i.MX 6SoloX Applications Processor Reference Manual and "Figure 18-5. BUS clock generation" of i.MX 6UltraLite Applications Processor Reference Manual. If mmdc clk sources from pll4_main_clk(pll_audio), the calculation is wrong.
Fix mmdc_ch0 clk calculation. Also add PLL_AUDIO/VIDEO support for decode_pll.
---
Changes V2:
Address Eric's comemnts about indent format. Use pmu_misc2_audio_div, but not misc2_audio_div.
Define macro to simplify c code.
arch/arm/cpu/armv7/mx6/clock.c | 61 +++++++++++++++++++++++++++++--- arch/arm/include/asm/arch-mx6/crm_regs.h | 12 +++++++ 2 files changed, 69 insertions(+), 4 deletions(-)
arch/arm/cpu/armv7/mx6/clock.c +57 -4
@@ -18,6 +18,8 @@ enum pll_clocks {PLL_BUS ,/* System Bus PLL*/ PLL_USBOTG ,/* OTG USB PLL */ PLL_ENET ,/* ENET PLL */ +PLL_AUDIO ,/* AUDIO PLL */ + PLL_VIDEO, /* AUDIO PLL */ };struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR ;
@@ -204,7 +206,7 @@ int enable_spi_clk(unsigned char enable, unsigned spi_num) }static u32 decode_pll (enum pll_clocks pll,u32 infreq) { -u32 div; +u32 div, test_div, pll_num, pll_denom;switch (pll) {case PLL_SYS :
@@ -227,6 +229,44 @@ static u32 decode_pll(enum pll_clocks pll, u32 infreq) div &=BM_ANADIG_PLL_ENET_DIV_SELECT ;return 25000000 * (div + (div >>1 ) +1 ); +case PLL_AUDIO : + div =__raw_readl (&imx_ccm->analog_pll_audio); +if (!(div &BM_ANADIG_PLL_AUDIO_ENABLE )) +return 0 ; +/* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */ +if (div &BM_ANADIG_PLL_AUDIO_BYPASS ) +return MXC_HCLK ; + pll_num =__raw_readl (&imx_ccm->analog_pll_audio_num); + pll_denom =__raw_readl (&imx_ccm->analog_pll_audio_denom); + test_div = (div &BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT ) >> +BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT ; + div &=BM_ANADIG_PLL_AUDIO_DIV_SELECT ; +if (test_div ==3 ) { +debug ("Error test_div\n" ); +return 0 ; + } + test_div =1 << (2 - test_div); + +return infreq * (div + pll_num / pll_denom) / test_div; +case PLL_VIDEO : + div =__raw_readl (&imx_ccm->analog_pll_video); +if (!(div &BM_ANADIG_PLL_VIDEO_ENABLE )) +return 0 ; +/* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */ +if (div &BM_ANADIG_PLL_VIDEO_BYPASS ) +return MXC_HCLK ; + pll_num =__raw_readl (&imx_ccm->analog_pll_video_num); + pll_denom =__raw_readl (&imx_ccm->analog_pll_video_denom); + test_div = (div &BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT ) >> +BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT ; + div &=BM_ANADIG_PLL_VIDEO_DIV_SELECT ; +if (test_div ==3 ) { +debug ("Error test_div\n" ); +return 0 ; + } + test_div =1 << (2 - test_div); + +return infreq * (div + pll_num / pll_denom) / test_div;default :return 0 ; }
@@ -437,7 +477,7 @@ static u32 get_mmdc_ch0_clk(void)u32 cbcmr =__raw_readl (&imx_ccm->cbcmr);u32 cbcdr =__raw_readl (&imx_ccm->cbcdr); -u32 freq, podf, per2_clk2_podf; +u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div;if (is_cpu_type (MXC_CPU_MX6SX ) ||is_cpu_type (MXC_CPU_MX6UL ) ||is_cpu_type (MXC_CPU_MX6SL )) {
@@ -472,8 +512,21 @@ static u32 get_mmdc_ch0_clk(void) freq =mxc_get_pll_pfd (PLL_BUS ,0 );break ;case 3 : -/* static / 2 divider */ - freq =mxc_get_pll_pfd (PLL_BUS ,2 ) /2 ; + pmu_misc2_audio_div =PMU_MISC2_AUDIO_DIV (__raw_readl (&imx_ccm->pmu_misc2)); +switch (pmu_misc2_audio_div) { +case 0 : +case 2 : + pmu_misc2_audio_div =1 ; +break ; +case 1 : + pmu_misc2_audio_div =2 ; +break ; +case 3 : + pmu_misc2_audio_div =4 ; +break ; + } + freq =decode_pll (PLL_AUDIO ,MXC_HCLK ) / + pmu_misc2_audio_div;break ; } }
arch/arm/include/asm/arch-mx6/crm_regs.h +12 -0
@@ -1227,4 +1227,16 @@ struct mxc_ccm_reg {#define BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF 0x00000008 +#define BM_PMU_MISC2_AUDIO_DIV_MSB (1 << 23) +#define BP_PMU_MISC2_AUDIO_DIV_MSB 23 + +#define BM_PMU_MISC2_AUDIO_DIV_LSB (1 << 15) +#define BP_PMU_MISC2_AUDIO_DIV_LSB 15 + +#define PMU_MISC2_AUDIO_DIV (v) \ + (((v & BM_PMU_MISC2_AUDIO_DIV_MSB) >> \ + (BP_PMU_MISC2_AUDIO_DIV_MSB - 1)) | \ + ((v & BM_PMU_MISC2_AUDIO_DIV_LSB) >> \ + BP_PMU_MISC2_AUDIO_DIV_LSB)) +#endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */
Signature · 1 line
2.6.2
PATCH v2 2/2 imx: mx6ul/sx: fix mmdc_ch0 clk calculation
Quoted 7 lines · Peng Fan
From: Peng Fan <[email protected]>
Check "Figure 19-5. BUS clock generation" of i.MX 6SoloX Applications Processor Reference Manual and "Figure 18-5. BUS clock generation" of i.MX 6UltraLite Applications Processor Reference Manual. If mmdc clk sources from
pll4_main_clk(pll_audio), the calculation is wrong.
Quoted 6 lines
Fix
mmdc_ch0clk calculation. Also add PLL_AUDIO/VIDEO support fordecode_pll.Signed-off-by Peng Fan <[email protected]>Cc Stefano Babic <[email protected]>---
Applied to u-boot-imx, thanks!
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================
PATCH v2 1/2 imx: mx6: add more entry for mxc_ccm_reg
In reply to Peng FanQuoted 4 lines · Peng Fan
From: Peng Fan <[email protected]>
Add more entries for structure
mxc_ccm_reg.
Quoted 9 lines
Signed-off-by Peng Fan <[email protected]>Reviewed-by Eric Nelson <[email protected]>Cc Stefano Babic <[email protected]>---
Changes V2:
Address Eric'c comments. Add Comments and rename registers from PMU with prefix pmu.
Nice. Thanks.
PATCH v2 1/2 imx: mx6: add more entry for mxc_ccm_reg
In reply to Peng FanQuoted 9 lines · Peng Fan
From: Peng Fan <[email protected]>
Add more entries for structure
mxc_ccm_reg.Signed-off-by Peng Fan <[email protected]>Reviewed-by Eric Nelson <[email protected]>Cc Stefano Babic <[email protected]>---
Applied to u-boot-imx, thanks!
Best regards,
Stefano Babic
Signature · 5 lines
===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de =====================================================================