From: Tomasz Figa <tomasz.figa@gmail.com>
To: Shaik Ameer Basha <shaik.ameer@samsung.com>,
linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Cc: mturquette@linaro.org, kgene.kim@samsung.com, joshi@samsung.com,
shaik.samsung@gmail.com, r.sh.open@gmail.com,
Rahul Sharma <rahul.sharma@samsung.com>
Subject: Re: [PATCH v2 5/7] clk: exynos5420: Add missing clocks
Date: Tue, 15 Apr 2014 19:56:39 +0200 [thread overview]
Message-ID: <534D72D7.4000902@gmail.com> (raw)
In-Reply-To: <1395918470-16374-6-git-send-email-shaik.ameer@samsung.com>
Hi Shaik,
On 27.03.2014 12:07, Shaik Ameer Basha wrote:
> From: Rahul Sharma <rahul.sharma@samsung.com>
>
> This patch adds the missing clocks related to the modules
> like FIMD, DP, GSCL, MSCL, ISP, MFC etc.
>
> Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com>
> Signed-off-by: Shaik Ameer Basha <shaik.ameer@samsung.com>
> ---
> drivers/clk/samsung/clk-exynos5420.c | 221 +++++++++++++++++++++++++++++++++-
> 1 file changed, 219 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
> index 793fb3d..26ddf33 100644
> --- a/drivers/clk/samsung/clk-exynos5420.c
> +++ b/drivers/clk/samsung/clk-exynos5420.c
> @@ -269,15 +269,36 @@ PNAME(mout_group3_p) = {"mout_sclk_rpll", "mout_sclk_spll"};
> PNAME(mout_group4_p) = {"mout_sclk_ipll", "mout_sclk_dpll", "mout_sclk_mpll"};
> PNAME(mout_group5_p) = {"mout_sclk_vpll", "mout_sclk_dpll"};
>
> +PNAME(mout_fimd1_final_p) = {"mout_fimd1", "mout_fimd1_opt"};
> PNAME(mout_sw_aclk66_p) = {"dout_aclk66", "mout_sclk_spll"};
> PNAME(mout_user_aclk66_peric_p) = {"fin_pll", "mout_sw_aclk66"};
> +PNAME(mout_user_aclk66_gpio_p) = {"mout_sw_aclk66", "ffactor_sw_aclk66"};
>
> PNAME(mout_sw_aclk200_fsys_p) = {"dout_aclk200_fsys", "mout_sclk_spll"};
> +PNAME(mout_sw_pclk200_fsys_p) = {"dout_pclk200_fsys", "mout_sclk_spll"};
> +PNAME(mout_user_pclk200_fsys_p) = {"fin_pll", "mout_sw_pclk200_fsys"};
> PNAME(mout_user_aclk200_fsys_p) = {"fin_pll", "mout_sw_aclk200_fsys"};
>
> PNAME(mout_sw_aclk200_fsys2_p) = {"dout_aclk200_fsys2", "mout_sclk_spll"};
> PNAME(mout_user_aclk200_fsys2_p) = {"fin_pll", "mout_sw_aclk200_fsys2"};
>
> +PNAME(mout_sw_aclk100_noc_p) = {"dout_aclk100_noc", "mout_sclk_spll"};
> +PNAME(mout_user_aclk100_noc_p) = {"fin_pll", "mout_sw_aclk100_noc"};
> +
> +PNAME(mout_sw_aclk400_wcore_p) = {"dout_aclk400_wcore", "mout_sclk_spll"};
> +PNAME(mout_aclk400_wcore_bpll_p) = {"mout_aclk400_wcore", "sclk_bpll"};
> +PNAME(mout_user_aclk400_wcore_p) = {"fin_pll", "mout_sw_aclk400_wcore"};
> +
> +PNAME(mout_sw_aclk400_isp_p) = {"dout_aclk400_isp", "mout_sclk_spll"};
> +PNAME(mout_user_aclk400_isp_p) = {"fin_pll", "mout_sw_aclk400_isp"};
> +
> +PNAME(mout_sw_aclk333_432_isp0_p) = {"dout_aclk333_432_isp0",
> + "mout_sclk_spll"};
> +PNAME(mout_user_aclk333_432_isp0_p) = {"fin_pll", "mout_sw_aclk333_432_isp0"};
> +
> +PNAME(mout_sw_aclk333_432_isp_p) = {"dout_aclk333_432_isp", "mout_sclk_spll"};
> +PNAME(mout_user_aclk333_432_isp_p) = {"fin_pll", "mout_sw_aclk333_432_isp"};
> +
> PNAME(mout_sw_aclk200_p) = {"dout_aclk200", "mout_sclk_spll"};
> PNAME(mout_aclk200_disp1_p) = {"fin_pll", "mout_sw_aclk200"};
>
> @@ -292,6 +313,7 @@ PNAME(mout_user_aclk166_p) = {"fin_pll", "mout_sw_aclk166"};
>
> PNAME(mout_sw_aclk266_p) = {"dout_aclk266", "mout_sclk_spll"};
> PNAME(mout_user_aclk266_p) = {"fin_pll", "mout_sw_aclk266"};
> +PNAME(mout_user_aclk266_isp_p) = {"fin_pll", "mout_sw_aclk266"};
>
> PNAME(mout_sw_aclk333_432_gscl_p) = {"dout_aclk333_432_gscl", "mout_sclk_spll"};
> PNAME(mout_user_aclk333_432_gscl_p) = {"fin_pll", "mout_sw_aclk333_432_gscl"};
> @@ -300,7 +322,9 @@ PNAME(mout_sw_aclk300_gscl_p) = {"dout_aclk300_gscl", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_gscl_p) = {"fin_pll", "mout_sw_aclk300_gscl"};
>
> PNAME(mout_sw_aclk300_disp1_p) = {"dout_aclk300_disp1", "mout_sclk_spll"};
> +PNAME(mout_sw_aclk400_disp1_p) = {"dout_aclk400_disp1", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_disp1_p) = {"fin_pll", "mout_sw_aclk300_disp1"};
> +PNAME(mout_user_aclk400_disp1_p) = {"fin_pll", "mout_sw_aclk400_disp1"};
>
> PNAME(mout_sw_aclk300_jpeg_p) = {"dout_aclk300_jpeg", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_jpeg_p) = {"fin_pll", "mout_sw_aclk300_jpeg"};
> @@ -330,6 +354,8 @@ PNAME(mout_hdmi_p) = {"dout_hdmi_pixel", "sclk_hdmiphy"};
> PNAME(mout_maudio0_p) = {"fin_pll", "maudio_clk", "mout_sclk_dpll",
> "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
> "mout_sclk_epll", "mout_sclk_rpll"};
> +PNAME(mout_mau_epll_clk_p) = {"mout_sclk_epll", "mout_sclk_dpll",
> + "mout_sclk_mpll", "mout_sclk_spll"};
>
> /* fixed rate clocks generated outside the soc */
> static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = {
> @@ -347,6 +373,7 @@ static struct samsung_fixed_rate_clock exynos5420_fixed_rate_clks[] __initdata =
>
> static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = {
> FFACTOR(0, "ffactor_hsic_12m", "fin_pll", 1, 2, 0),
> + FFACTOR(0, "ffactor_sw_aclk66", "mout_sw_aclk66", 1, 2, 0),
> };
>
> static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> @@ -452,6 +479,10 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(0, "mout_dp1", mout_group2_p, SRC_DISP10, 20, 3),
> MUX(0, "mout_pixel", mout_group2_p, SRC_DISP10, 24, 3),
> MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP10, 28, 1),
> + MUX_F(0, "mout_fimd1_opt", mout_group2_p, SRC_DISP10, 8, 3,
> + CLK_SET_RATE_PARENT, 0),
> + MUX_F(0, "mout_fimd1_final", mout_fimd1_final_p, TOP_SPARE2, 8, 1,
> + CLK_SET_RATE_PARENT, 0),
>
> /* MAU Block */
> MUX_F(CLK_MOUT_MAUDIO0, "mout_maudio0", mout_maudio0_p, SRC_MAU, 28, 3,
> @@ -464,6 +495,7 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(0, "mout_mmc2", mout_group2_p, SRC_FSYS, 16, 3),
> MUX(0, "mout_usbd300", mout_group2_p, SRC_FSYS, 20, 3),
> MUX(0, "mout_unipro", mout_group2_p, SRC_FSYS, 24, 3),
> + MUX(0, "mout_mphy_refclk", mout_group2_p, SRC_FSYS, 28, 3),
>
> /* PERIC Block */
> MUX(0, "mout_uart0", mout_group2_p, SRC_PERIC0, 4, 3),
> @@ -478,6 +510,58 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(CLK_MOUT_SPI0, "mout_spi0", mout_group2_p, SRC_PERIC1, 20, 3),
> MUX(CLK_MOUT_SPI1, "mout_spi1", mout_group2_p, SRC_PERIC1, 24, 3),
> MUX(CLK_MOUT_SPI2, "mout_spi2", mout_group2_p, SRC_PERIC1, 28, 3),
> +
> + MUX(0, "mout_user_aclk66_gpio", mout_user_aclk66_gpio_p,
> + SRC_TOP7, 4, 1),
> + MUX_F(0, "mout_mau_epll_clk", mout_mau_epll_clk_p, SRC_TOP7, 20, 2,
> + CLK_SET_RATE_PARENT, 0),
> + MUX(0, "mout_pclk200_fsys", mout_group1_p, SRC_TOP0, 24, 2),
> + MUX(0, "mout_sw_pclk200_fsys", mout_sw_pclk200_fsys_p,
> + SRC_TOP10, 24, 1),
> + MUX(0, "mout_user_pclk200_fsys", mout_user_pclk200_fsys_p,
> + SRC_TOP3, 24, 1),
> + MUX(0, "mout_aclk100_noc", mout_group1_p, SRC_TOP0, 20, 2),
> + MUX(0, "mout_sw_aclk100_noc", mout_sw_aclk100_noc_p,
> + SRC_TOP10, 20, 1),
> + MUX(0, "mout_user_aclk100_noc", mout_user_aclk100_noc_p,
> + SRC_TOP3, 20, 1),
> + MUX(0, "mout_aclk400_wcore", mout_group1_p, SRC_TOP0, 16, 2),
> + MUX(0, "mout_aclk400_wcore_bpll", mout_aclk400_wcore_bpll_p,
> + TOP_SPARE2, 4, 1),
> + MUX(0, "mout_sw_aclk400_wcore", mout_sw_aclk400_wcore_p,
> + SRC_TOP10, 16, 1),
> + MUX(0, "mout_user_aclk400_wcore", mout_user_aclk400_wcore_p,
> + SRC_TOP3, 16, 1),
> + MUX(0, "mout_aclk400_isp", mout_group1_p, SRC_TOP0, 0, 2),
> + MUX(0, "mout_sw_aclk400_isp", mout_sw_aclk400_isp_p,
> + SRC_TOP10, 0, 1),
> + MUX(0, "mout_user_aclk400_isp", mout_user_aclk400_isp_p,
> + SRC_TOP3, 0, 1),
> + MUX(0, "mout_aclk333_432_isp0", mout_group4_p, SRC_TOP1, 12, 2),
> + MUX(0, "mout_sw_aclk333_432_isp0", mout_sw_aclk333_432_isp0_p,
> + SRC_TOP11, 12, 1),
> + MUX(0, "mout_user_aclk333_432_isp0", mout_user_aclk333_432_isp0_p,
> + SRC_TOP4, 12, 1),
> + MUX(0, "mout_aclk333_432_isp", mout_group4_p,
> + SRC_TOP1, 4, 2),
> + MUX(0, "mout_sw_aclk333_432_isp", mout_sw_aclk333_432_isp_p,
> + SRC_TOP11, 4, 1),
> + MUX(0, "mout_user_aclk333_432_isp", mout_user_aclk333_432_isp_p,
> + SRC_TOP4, 4, 1),
> + MUX(0, "mout_user_aclk266_isp", mout_user_aclk266_isp_p,
> + SRC_TOP4, 16, 1),
> + MUX(0, "mout_aclk400_disp1", mout_group1_p, SRC_TOP2, 4, 2),
> + MUX(0, "mout_sw_aclk400_disp1", mout_sw_aclk400_disp1_p,
> + SRC_TOP12, 4, 1),
> + MUX(0, "mout_user_aclk400_disp1", mout_user_aclk400_disp1_p,
> + SRC_TOP5, 0, 1),
> +
> + /* ISP Block*/
> + MUX(0, "mout_pwm_isp", mout_group2_p, SRC_ISP, 24, 3),
> + MUX(0, "mout_uart_isp", mout_group2_p, SRC_ISP, 20, 3),
> + MUX(0, "mout_spi0_isp", mout_group2_p, SRC_ISP, 12, 3),
> + MUX(0, "mout_spi1_isp", mout_group2_p, SRC_ISP, 16, 3),
> + MUX(0, "mout_isp_sensor", mout_group2_p, SRC_ISP, 28, 3),
> };
>
> static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> @@ -512,6 +596,7 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8),
> DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4),
> DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4),
> + DIV(0, "dout_disp1_blk", "aclk200_disp1", DIV2_RATIO0, 16, 2),
>
> /* Audio Block */
> DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4),
> @@ -529,6 +614,7 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10),
>
> DIV(0, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8),
> + DIV(0, "dout_mphy_refclk", "mout_mphy_refclk", DIV_FSYS2, 16, 8),
>
> /* UART and PWM */
> DIV(0, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4),
> @@ -557,6 +643,39 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_spi0_pre", "dout_spi0", DIV_PERIC4, 8, 8),
> DIV(0, "dout_spi1_pre", "dout_spi1", DIV_PERIC4, 16, 8),
> DIV(0, "dout_spi2_pre", "dout_spi2", DIV_PERIC4, 24, 8),
> +
> + DIV(0, "dout_aclk400_disp1", "mout_aclk400_disp1",
> + DIV_TOP2, 4, 3),
> + DIV(0, "dout_aclk100_noc", "mout_aclk100_noc", DIV_TOP0, 20, 3),
> + DIV(0, "dout_aclk400_wcore", "mout_aclk400_wcore_bpll",
> + DIV_TOP0, 16, 3),
> + DIV(0, "dout_aclk400_isp", "mout_aclk400_isp", DIV_TOP0, 0, 3),
> + DIV(0, "dout_aclk333_432_isp0", "mout_aclk333_432_isp0",
> + DIV_TOP1, 16, 3),
> + DIV(0, "dout_aclk333_432_isp", "mout_aclk333_432_isp",
> + DIV_TOP1, 4, 3),
> + /* Mfc Blk */
> + DIV(0, "dout_mfc_blk", "mout_user_aclk333", DIV4_RATIO, 0, 2),
> + /* Gscl Blk */
> + DIV(0, "dout_gscl_blk_300", "mout_user_aclk300_gscl",
> + DIV2_RATIO0, 4, 2),
> + DIV(0, "dout_gscl_blk_333", "aclk333_432_gscl", DIV2_RATIO0, 6, 2),
> + /* Mscl Blk */
> + DIV(0, "dout_mscl_blk", "aclk400_mscl", DIV2_RATIO0, 28, 2),
> + /* Psgen */
> + DIV(0, "dout_gen_blk", "mout_user_aclk266", DIV2_RATIO0, 8, 1),
> + /* Jpeg */
> + DIV(0, "dout_jpg_blk", "aclk166", DIV2_RATIO0, 20, 1),
> + /* isp */
> + DIV(0, "dout_pwm_isp", "mout_pwm_isp", SCLK_DIV_ISP1, 28, 4),
> + DIV(0, "dout_uart_isp", "mout_uart_isp", SCLK_DIV_ISP1, 24, 4),
> + DIV(0, "dout_spi0_isp", "mout_spi0_isp", SCLK_DIV_ISP1, 16, 4),
> + DIV(0, "dout_spi1_isp", "mout_spi1_isp", SCLK_DIV_ISP1, 20, 4),
> + DIV(0, "dout_spi0_isp_pre", "dout_spi0_isp", SCLK_DIV_ISP1, 0, 8),
> + DIV(0, "dout_spi1_isp_pre", "dout_spi1_isp", SCLK_DIV_ISP1, 8, 8),
> + DIV(0, "dout_isp_sensor0", "mout_isp_sensor", SCLK_DIV_ISP0, 8, 8),
> + DIV(0, "dout_isp_sensor1", "mout_isp_sensor", SCLK_DIV_ISP0, 16, 8),
> + DIV(0, "dout_isp_sensor2", "mout_isp_sensor", SCLK_DIV_ISP0, 24, 8),
> };
>
> static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> @@ -781,12 +900,18 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE(CLK_PCLK_TMU_GPU, "pclk_tmu_gpu", "aclk66_psgen",
> GATE_IP_PERIS, 22, 0, 0),
>
> + GATE(CLK_PCLK_GSCL0, "pclk_gscl0", "dout_gscl_blk_300",
> + GATE_IP_GSCL0, 14, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_GSCL1, "pclk_gscl1", "dout_gscl_blk_300",
> + GATE_IP_GSCL0, 15, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_ACLK_GSCL0, "aclk_gscl0", "mout_user_aclk300_gscl",
> GATE_IP_GSCL0, 0, 0, 0),
> GATE(CLK_ACLK_GSCL1, "aclk_gscl1", "mout_user_aclk300_gscl",
> GATE_IP_GSCL0, 1, 0, 0),
> GATE(CLK_ACLK_FIMC_3AA, "aclk_fimc_3aa", "aclk333_432_gscl",
> GATE_IP_GSCL0, 4, 0, 0),
> + GATE(CLK_PCLK_FIMC_3AA, "pclk_fimc_3aa", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 9, 0, 0),
>
> GATE(CLK_SMMU_3AA, "smmu_3aa", "dout_gscl_blk_333",
> GATE_IP_GSCL1, 2, 0, 0),
> @@ -818,9 +943,13 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE_BUS_DISP1, 19, 0, 0),
> GATE(CLK_SMMU_FIMD1M0, "smmu_fimd1m0", "dout_disp1_blk",
> GATE_IP_DISP1, 7, 0, 0),
> + GATE(CLK_SMMU_FIMD1M1, "smmu_fimd1m1", "dout_disp1_blk",
> + GATE_IP_DISP1, 8, 0, 0),
>
> GATE(CLK_ACLK_MFC, "aclk_mfc", "mout_user_aclk333",
> GATE_BUS_MFC, 0, 0, 0),
> + GATE(CLK_PCLK_MFC, "pclk_mfc", "dout_mfc_blk",
> + GATE_BUS_MFC, 16, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_SMMU_MFCL, "smmu_mfcl", "dout_mfc_blk", GATE_IP_MFC, 1, 0, 0),
> GATE(CLK_SMMU_MFCR, "smmu_mfcr", "dout_mfc_blk", GATE_IP_MFC, 2, 0, 0),
> GATE(CLK_G3D, "clk_g3d", "mout_user_aclk_g3d",
> @@ -828,14 +957,24 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
>
> GATE(CLK_ACLK_ROTATOR, "aclk_rotator", "mout_user_aclk266",
> GATE_IP_GEN, 1, 0, 0),
> + GATE(CLK_PCLK_ROTATOR, "pclk_rotator", "dout_gen_blk",
> + GATE_BUS_GEN, 13, 0, 0),
> GATE(CLK_ACLK_JPEG, "aclk_jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
> GATE(CLK_ACLK_JPEG2, "aclk_jpeg2", "aclk300_jpeg",
> GATE_IP_GEN, 3, 0, 0),
> + GATE(CLK_ACLK_MDMA0, "aclk_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 1, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_ACLK_MDMA1, "aclk_mdma1", "mout_user_aclk266",
> GATE_IP_GEN, 4, 0, 0),
> GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "dout_gen_blk",
> GATE_IP_GEN, 6, 0, 0),
> + GATE(CLK_ACLK_SMMU_MDMA0, "aclk_smmu_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 5, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 20, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_SMMU_JPEG, "smmu_jpeg", "dout_jpg_blk", GATE_IP_GEN, 7, 0, 0),
> + GATE(CLK_SMMU_JPEG2, "smmu_jpeg2", "dout_jpg_blk",
> + GATE_BUS_GEN, 28, 0, 0),
> GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "dout_gen_blk",
> GATE_IP_GEN, 9, 0, 0),
>
> @@ -845,14 +984,92 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE_BUS_MSCL, 1, 0, 0),
> GATE(CLK_ACLK_MSCL2, "aclk_mscl2", "aclk400_mscl",
> GATE_BUS_MSCL, 2, 0, 0),
> + GATE(CLK_PCLK_MSCL0, "pclk_mscl0", "dout_mscl_blk",
> + GATE_BUS_MSCL, 8, 0, 0),
> + GATE(CLK_PCLK_MSCL1, "pclk_mscl1", "dout_mscl_blk",
> + GATE_BUS_MSCL, 9, 0, 0),
> + GATE(CLK_PCLK_MSCL2, "pclk_mscl2", "dout_mscl_blk",
> + GATE_BUS_MSCL, 10, 0, 0),
> GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "dout_mscl_blk",
> GATE_IP_MSCL, 8, 0, 0),
> GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "dout_mscl_blk",
> GATE_IP_MSCL, 9, 0, 0),
> GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "dout_mscl_blk",
> GATE_IP_MSCL, 10, 0, 0),
> - GATE(CLK_SMMU_MIXER, "smmu_mixer", "dout_disp1_blk",
> - GATE_IP_DISP1, 9, 0, 0),
> + GATE(CLK_ACLK_SMMU_MIXER, "aclk_smmu_mixer", "aclk200_disp1",
> + GATE_BUS_DISP1, 9, CLK_IGNORE_UNUSED, 0),
> +
> + /* aclk333 gates internal MFC busses and should not be gated. */
> + /* aclk266 also gates other IPs in psgen. It should not be gated. */
> + GATE(CLK_ACLK266, "aclk266", "mout_user_aclk266",
> + GATE_BUS_NOC, 22, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK200_DISP1, "aclk200_disp1", "mout_aclk200_disp1",
> + GATE_BUS_TOP, 18, CLK_IGNORE_UNUSED, 0),
> + /* gating of aclk300_gscl causes system hang. It should not be gated. */
> + GATE(CLK_ACLK400_MSCL, "aclk400_mscl", "mout_user_aclk400_mscl",
> + GATE_BUS_TOP, 17, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK300_DISP1, "aclk300_disp1", "mout_user_aclk300_disp1",
> + SRC_MASK_TOP2, 24, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK266_ISP, "aclk266_isp", "mout_user_aclk266_isp",
> + GATE_BUS_TOP, 13, 0, 0),
> + GATE(CLK_ACLK400_ISP, "aclk400_isp", "mout_user_aclk400_isp",
> + GATE_BUS_TOP, 16, 0, 0),
> + GATE(CLK_ACLK333_432_ISP0, "aclk333_432_isp0",
> + "mout_user_aclk333_432_isp0", GATE_BUS_TOP, 5, 0, 0),
> + GATE(CLK_ACLK333_432_ISP, "aclk333_432_isp",
> + "mout_user_aclk333_432_isp", GATE_BUS_TOP, 8, 0, 0),
> + /* misc: mct, adc, chipid, wdt, rtc, sysreg etc */
> + GATE(CLK_PCLK_MC, "pclk_mc", "aclk66_psgen", GATE_BUS_GEN, 12, 0, 0),
> + GATE(CLK_PCLK_TOP_RTC, "pclk_top_rtc", "aclk66_psgen",
> + GATE_IP_GEN, 5, 0, 0),
> + GATE(CLK_SCLK_HSIC_12M, "sclk_hsic_12m", "ffactor_hsic_12m",
> + GATE_BUS_TOP, 29, 0, 0),
> + GATE(CLK_SCLK_MPHY_IXTAL24, "sclk_mphy_ixtal24", "mphy_refclk_ixtal24",
> + GATE_BUS_TOP, 28, 0, 0),
> + /*
> + * HACK: When aclk_fimd1 is gated, aclk300_disp1 also gets gated as
> + * aclk_fimd1 is the only child node. aclk300_disp1 is connected
> + * to hdmi, mixer IPs through internal busses. gating of aclk300_disp1
> + * breaks HDMI S2R.
> + */
> + GATE(CLK_PCLK_HDMIPHY, "pclk_hdmiphy", "dout_disp1_blk",
> + GATE_BUS_DISP1, 15, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SCLK_MPHY_REFCLK, "sclk_mphy_refclk", "dout_mphy_refclk",
> + GATE_BUS_TOP, 30, 0, 0),
> + GATE(CLK_ACLK_FIMC_LITE0, "aclk_fimc_lite0", "aclk333_432_gscl",
> + GATE_IP_GSCL0, 5, 0, 0),
> + GATE(CLK_ACLK_FIMC_LITE1, "aclk_fimc_lite1", "aclk333_432_gscl",
> + GATE_IP_GSCL0, 6, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE0, "pclk_fimc_lite0", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 10, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE1, "pclk_fimc_lite1", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 11, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE3, "pclk_fimc_lite3", "dout_gscl_blk_333",
> + GATE_BUS_GSCL0, 13, 0, 0),
> + /* g2d */
> + GATE(CLK_ACLK_G2D, "aclk_g2d", "aclk333_g2d",
> + GATE_BUS_G2D, 3, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_G2D, "pclk_g2d", "aclk266_g2d",
> + GATE_BUS_G2D, 19, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK_SMMU_G2D, "aclk_smmu_g2d", "aclk333_g2d",
> + GATE_BUS_G2D, 7, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SMMU_G2D, "smmu_g2d", "aclk266_g2d",
> + GATE_BUS_G2D, 22, CLK_IGNORE_UNUSED, 0),
> + /* ISP */
> + GATE(CLK_SCLK_PWM_ISP, "sclk_pwm_isp", "dout_pwm_isp",
> + GATE_TOP_SCLK_ISP, 3, 0, 0),
> + GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "dout_uart_isp",
> + GATE_TOP_SCLK_ISP, 0, 0, 0),
> + GATE(CLK_SCLK_SPI0_ISP, "sclk_spi0_isp", "dout_spi0_isp_pre",
> + GATE_TOP_SCLK_ISP, 1, 0, 0),
> + GATE(CLK_SCLK_SPI1_ISP, "sclk_spi1_isp", "dout_spi1_isp_pre",
> + GATE_TOP_SCLK_ISP, 2, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "dout_isp_sensor0",
> + GATE_TOP_SCLK_ISP, 4, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "dout_isp_sensor1",
> + GATE_TOP_SCLK_ISP, 8, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "dout_isp_sensor2",
> + GATE_TOP_SCLK_ISP, 12, 0, 0),
>
> /* SSS */
> GATE(CLK_ACLK_SSS, "aclk_sss", "aclk266_g2d", GATE_IP_G2D, 2, 0, 0),
>
This is really hard to review. May I ask you to split it into separate
patch adding clocks for each block mentioned in description, please?
Also, as I mentioned in my comments to patches 1/7 and 2/7, respective
IDs and registers being added should be in respective patches.
Best regards,
Tomasz
WARNING: multiple messages have this Message-ID (diff)
From: tomasz.figa@gmail.com (Tomasz Figa)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 5/7] clk: exynos5420: Add missing clocks
Date: Tue, 15 Apr 2014 19:56:39 +0200 [thread overview]
Message-ID: <534D72D7.4000902@gmail.com> (raw)
In-Reply-To: <1395918470-16374-6-git-send-email-shaik.ameer@samsung.com>
Hi Shaik,
On 27.03.2014 12:07, Shaik Ameer Basha wrote:
> From: Rahul Sharma <rahul.sharma@samsung.com>
>
> This patch adds the missing clocks related to the modules
> like FIMD, DP, GSCL, MSCL, ISP, MFC etc.
>
> Signed-off-by: Rahul Sharma <rahul.sharma@samsung.com>
> Signed-off-by: Shaik Ameer Basha <shaik.ameer@samsung.com>
> ---
> drivers/clk/samsung/clk-exynos5420.c | 221 +++++++++++++++++++++++++++++++++-
> 1 file changed, 219 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
> index 793fb3d..26ddf33 100644
> --- a/drivers/clk/samsung/clk-exynos5420.c
> +++ b/drivers/clk/samsung/clk-exynos5420.c
> @@ -269,15 +269,36 @@ PNAME(mout_group3_p) = {"mout_sclk_rpll", "mout_sclk_spll"};
> PNAME(mout_group4_p) = {"mout_sclk_ipll", "mout_sclk_dpll", "mout_sclk_mpll"};
> PNAME(mout_group5_p) = {"mout_sclk_vpll", "mout_sclk_dpll"};
>
> +PNAME(mout_fimd1_final_p) = {"mout_fimd1", "mout_fimd1_opt"};
> PNAME(mout_sw_aclk66_p) = {"dout_aclk66", "mout_sclk_spll"};
> PNAME(mout_user_aclk66_peric_p) = {"fin_pll", "mout_sw_aclk66"};
> +PNAME(mout_user_aclk66_gpio_p) = {"mout_sw_aclk66", "ffactor_sw_aclk66"};
>
> PNAME(mout_sw_aclk200_fsys_p) = {"dout_aclk200_fsys", "mout_sclk_spll"};
> +PNAME(mout_sw_pclk200_fsys_p) = {"dout_pclk200_fsys", "mout_sclk_spll"};
> +PNAME(mout_user_pclk200_fsys_p) = {"fin_pll", "mout_sw_pclk200_fsys"};
> PNAME(mout_user_aclk200_fsys_p) = {"fin_pll", "mout_sw_aclk200_fsys"};
>
> PNAME(mout_sw_aclk200_fsys2_p) = {"dout_aclk200_fsys2", "mout_sclk_spll"};
> PNAME(mout_user_aclk200_fsys2_p) = {"fin_pll", "mout_sw_aclk200_fsys2"};
>
> +PNAME(mout_sw_aclk100_noc_p) = {"dout_aclk100_noc", "mout_sclk_spll"};
> +PNAME(mout_user_aclk100_noc_p) = {"fin_pll", "mout_sw_aclk100_noc"};
> +
> +PNAME(mout_sw_aclk400_wcore_p) = {"dout_aclk400_wcore", "mout_sclk_spll"};
> +PNAME(mout_aclk400_wcore_bpll_p) = {"mout_aclk400_wcore", "sclk_bpll"};
> +PNAME(mout_user_aclk400_wcore_p) = {"fin_pll", "mout_sw_aclk400_wcore"};
> +
> +PNAME(mout_sw_aclk400_isp_p) = {"dout_aclk400_isp", "mout_sclk_spll"};
> +PNAME(mout_user_aclk400_isp_p) = {"fin_pll", "mout_sw_aclk400_isp"};
> +
> +PNAME(mout_sw_aclk333_432_isp0_p) = {"dout_aclk333_432_isp0",
> + "mout_sclk_spll"};
> +PNAME(mout_user_aclk333_432_isp0_p) = {"fin_pll", "mout_sw_aclk333_432_isp0"};
> +
> +PNAME(mout_sw_aclk333_432_isp_p) = {"dout_aclk333_432_isp", "mout_sclk_spll"};
> +PNAME(mout_user_aclk333_432_isp_p) = {"fin_pll", "mout_sw_aclk333_432_isp"};
> +
> PNAME(mout_sw_aclk200_p) = {"dout_aclk200", "mout_sclk_spll"};
> PNAME(mout_aclk200_disp1_p) = {"fin_pll", "mout_sw_aclk200"};
>
> @@ -292,6 +313,7 @@ PNAME(mout_user_aclk166_p) = {"fin_pll", "mout_sw_aclk166"};
>
> PNAME(mout_sw_aclk266_p) = {"dout_aclk266", "mout_sclk_spll"};
> PNAME(mout_user_aclk266_p) = {"fin_pll", "mout_sw_aclk266"};
> +PNAME(mout_user_aclk266_isp_p) = {"fin_pll", "mout_sw_aclk266"};
>
> PNAME(mout_sw_aclk333_432_gscl_p) = {"dout_aclk333_432_gscl", "mout_sclk_spll"};
> PNAME(mout_user_aclk333_432_gscl_p) = {"fin_pll", "mout_sw_aclk333_432_gscl"};
> @@ -300,7 +322,9 @@ PNAME(mout_sw_aclk300_gscl_p) = {"dout_aclk300_gscl", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_gscl_p) = {"fin_pll", "mout_sw_aclk300_gscl"};
>
> PNAME(mout_sw_aclk300_disp1_p) = {"dout_aclk300_disp1", "mout_sclk_spll"};
> +PNAME(mout_sw_aclk400_disp1_p) = {"dout_aclk400_disp1", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_disp1_p) = {"fin_pll", "mout_sw_aclk300_disp1"};
> +PNAME(mout_user_aclk400_disp1_p) = {"fin_pll", "mout_sw_aclk400_disp1"};
>
> PNAME(mout_sw_aclk300_jpeg_p) = {"dout_aclk300_jpeg", "mout_sclk_spll"};
> PNAME(mout_user_aclk300_jpeg_p) = {"fin_pll", "mout_sw_aclk300_jpeg"};
> @@ -330,6 +354,8 @@ PNAME(mout_hdmi_p) = {"dout_hdmi_pixel", "sclk_hdmiphy"};
> PNAME(mout_maudio0_p) = {"fin_pll", "maudio_clk", "mout_sclk_dpll",
> "mout_sclk_mpll", "mout_sclk_spll", "mout_sclk_ipll",
> "mout_sclk_epll", "mout_sclk_rpll"};
> +PNAME(mout_mau_epll_clk_p) = {"mout_sclk_epll", "mout_sclk_dpll",
> + "mout_sclk_mpll", "mout_sclk_spll"};
>
> /* fixed rate clocks generated outside the soc */
> static struct samsung_fixed_rate_clock exynos5420_fixed_rate_ext_clks[] __initdata = {
> @@ -347,6 +373,7 @@ static struct samsung_fixed_rate_clock exynos5420_fixed_rate_clks[] __initdata =
>
> static struct samsung_fixed_factor_clock exynos5420_fixed_factor_clks[] __initdata = {
> FFACTOR(0, "ffactor_hsic_12m", "fin_pll", 1, 2, 0),
> + FFACTOR(0, "ffactor_sw_aclk66", "mout_sw_aclk66", 1, 2, 0),
> };
>
> static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> @@ -452,6 +479,10 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(0, "mout_dp1", mout_group2_p, SRC_DISP10, 20, 3),
> MUX(0, "mout_pixel", mout_group2_p, SRC_DISP10, 24, 3),
> MUX(CLK_MOUT_HDMI, "mout_hdmi", mout_hdmi_p, SRC_DISP10, 28, 1),
> + MUX_F(0, "mout_fimd1_opt", mout_group2_p, SRC_DISP10, 8, 3,
> + CLK_SET_RATE_PARENT, 0),
> + MUX_F(0, "mout_fimd1_final", mout_fimd1_final_p, TOP_SPARE2, 8, 1,
> + CLK_SET_RATE_PARENT, 0),
>
> /* MAU Block */
> MUX_F(CLK_MOUT_MAUDIO0, "mout_maudio0", mout_maudio0_p, SRC_MAU, 28, 3,
> @@ -464,6 +495,7 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(0, "mout_mmc2", mout_group2_p, SRC_FSYS, 16, 3),
> MUX(0, "mout_usbd300", mout_group2_p, SRC_FSYS, 20, 3),
> MUX(0, "mout_unipro", mout_group2_p, SRC_FSYS, 24, 3),
> + MUX(0, "mout_mphy_refclk", mout_group2_p, SRC_FSYS, 28, 3),
>
> /* PERIC Block */
> MUX(0, "mout_uart0", mout_group2_p, SRC_PERIC0, 4, 3),
> @@ -478,6 +510,58 @@ static struct samsung_mux_clock exynos5420_mux_clks[] __initdata = {
> MUX(CLK_MOUT_SPI0, "mout_spi0", mout_group2_p, SRC_PERIC1, 20, 3),
> MUX(CLK_MOUT_SPI1, "mout_spi1", mout_group2_p, SRC_PERIC1, 24, 3),
> MUX(CLK_MOUT_SPI2, "mout_spi2", mout_group2_p, SRC_PERIC1, 28, 3),
> +
> + MUX(0, "mout_user_aclk66_gpio", mout_user_aclk66_gpio_p,
> + SRC_TOP7, 4, 1),
> + MUX_F(0, "mout_mau_epll_clk", mout_mau_epll_clk_p, SRC_TOP7, 20, 2,
> + CLK_SET_RATE_PARENT, 0),
> + MUX(0, "mout_pclk200_fsys", mout_group1_p, SRC_TOP0, 24, 2),
> + MUX(0, "mout_sw_pclk200_fsys", mout_sw_pclk200_fsys_p,
> + SRC_TOP10, 24, 1),
> + MUX(0, "mout_user_pclk200_fsys", mout_user_pclk200_fsys_p,
> + SRC_TOP3, 24, 1),
> + MUX(0, "mout_aclk100_noc", mout_group1_p, SRC_TOP0, 20, 2),
> + MUX(0, "mout_sw_aclk100_noc", mout_sw_aclk100_noc_p,
> + SRC_TOP10, 20, 1),
> + MUX(0, "mout_user_aclk100_noc", mout_user_aclk100_noc_p,
> + SRC_TOP3, 20, 1),
> + MUX(0, "mout_aclk400_wcore", mout_group1_p, SRC_TOP0, 16, 2),
> + MUX(0, "mout_aclk400_wcore_bpll", mout_aclk400_wcore_bpll_p,
> + TOP_SPARE2, 4, 1),
> + MUX(0, "mout_sw_aclk400_wcore", mout_sw_aclk400_wcore_p,
> + SRC_TOP10, 16, 1),
> + MUX(0, "mout_user_aclk400_wcore", mout_user_aclk400_wcore_p,
> + SRC_TOP3, 16, 1),
> + MUX(0, "mout_aclk400_isp", mout_group1_p, SRC_TOP0, 0, 2),
> + MUX(0, "mout_sw_aclk400_isp", mout_sw_aclk400_isp_p,
> + SRC_TOP10, 0, 1),
> + MUX(0, "mout_user_aclk400_isp", mout_user_aclk400_isp_p,
> + SRC_TOP3, 0, 1),
> + MUX(0, "mout_aclk333_432_isp0", mout_group4_p, SRC_TOP1, 12, 2),
> + MUX(0, "mout_sw_aclk333_432_isp0", mout_sw_aclk333_432_isp0_p,
> + SRC_TOP11, 12, 1),
> + MUX(0, "mout_user_aclk333_432_isp0", mout_user_aclk333_432_isp0_p,
> + SRC_TOP4, 12, 1),
> + MUX(0, "mout_aclk333_432_isp", mout_group4_p,
> + SRC_TOP1, 4, 2),
> + MUX(0, "mout_sw_aclk333_432_isp", mout_sw_aclk333_432_isp_p,
> + SRC_TOP11, 4, 1),
> + MUX(0, "mout_user_aclk333_432_isp", mout_user_aclk333_432_isp_p,
> + SRC_TOP4, 4, 1),
> + MUX(0, "mout_user_aclk266_isp", mout_user_aclk266_isp_p,
> + SRC_TOP4, 16, 1),
> + MUX(0, "mout_aclk400_disp1", mout_group1_p, SRC_TOP2, 4, 2),
> + MUX(0, "mout_sw_aclk400_disp1", mout_sw_aclk400_disp1_p,
> + SRC_TOP12, 4, 1),
> + MUX(0, "mout_user_aclk400_disp1", mout_user_aclk400_disp1_p,
> + SRC_TOP5, 0, 1),
> +
> + /* ISP Block*/
> + MUX(0, "mout_pwm_isp", mout_group2_p, SRC_ISP, 24, 3),
> + MUX(0, "mout_uart_isp", mout_group2_p, SRC_ISP, 20, 3),
> + MUX(0, "mout_spi0_isp", mout_group2_p, SRC_ISP, 12, 3),
> + MUX(0, "mout_spi1_isp", mout_group2_p, SRC_ISP, 16, 3),
> + MUX(0, "mout_isp_sensor", mout_group2_p, SRC_ISP, 28, 3),
> };
>
> static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> @@ -512,6 +596,7 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_mipi1", "mout_mipi1", DIV_DISP10, 16, 8),
> DIV(0, "dout_dp1", "mout_dp1", DIV_DISP10, 24, 4),
> DIV(CLK_DOUT_PIXEL, "dout_hdmi_pixel", "mout_pixel", DIV_DISP10, 28, 4),
> + DIV(0, "dout_disp1_blk", "aclk200_disp1", DIV2_RATIO0, 16, 2),
>
> /* Audio Block */
> DIV(0, "dout_maudio0", "mout_maudio0", DIV_MAU, 20, 4),
> @@ -529,6 +614,7 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_mmc2", "mout_mmc2", DIV_FSYS1, 20, 10),
>
> DIV(0, "dout_unipro", "mout_unipro", DIV_FSYS2, 24, 8),
> + DIV(0, "dout_mphy_refclk", "mout_mphy_refclk", DIV_FSYS2, 16, 8),
>
> /* UART and PWM */
> DIV(0, "dout_uart0", "mout_uart0", DIV_PERIC0, 8, 4),
> @@ -557,6 +643,39 @@ static struct samsung_div_clock exynos5420_div_clks[] __initdata = {
> DIV(0, "dout_spi0_pre", "dout_spi0", DIV_PERIC4, 8, 8),
> DIV(0, "dout_spi1_pre", "dout_spi1", DIV_PERIC4, 16, 8),
> DIV(0, "dout_spi2_pre", "dout_spi2", DIV_PERIC4, 24, 8),
> +
> + DIV(0, "dout_aclk400_disp1", "mout_aclk400_disp1",
> + DIV_TOP2, 4, 3),
> + DIV(0, "dout_aclk100_noc", "mout_aclk100_noc", DIV_TOP0, 20, 3),
> + DIV(0, "dout_aclk400_wcore", "mout_aclk400_wcore_bpll",
> + DIV_TOP0, 16, 3),
> + DIV(0, "dout_aclk400_isp", "mout_aclk400_isp", DIV_TOP0, 0, 3),
> + DIV(0, "dout_aclk333_432_isp0", "mout_aclk333_432_isp0",
> + DIV_TOP1, 16, 3),
> + DIV(0, "dout_aclk333_432_isp", "mout_aclk333_432_isp",
> + DIV_TOP1, 4, 3),
> + /* Mfc Blk */
> + DIV(0, "dout_mfc_blk", "mout_user_aclk333", DIV4_RATIO, 0, 2),
> + /* Gscl Blk */
> + DIV(0, "dout_gscl_blk_300", "mout_user_aclk300_gscl",
> + DIV2_RATIO0, 4, 2),
> + DIV(0, "dout_gscl_blk_333", "aclk333_432_gscl", DIV2_RATIO0, 6, 2),
> + /* Mscl Blk */
> + DIV(0, "dout_mscl_blk", "aclk400_mscl", DIV2_RATIO0, 28, 2),
> + /* Psgen */
> + DIV(0, "dout_gen_blk", "mout_user_aclk266", DIV2_RATIO0, 8, 1),
> + /* Jpeg */
> + DIV(0, "dout_jpg_blk", "aclk166", DIV2_RATIO0, 20, 1),
> + /* isp */
> + DIV(0, "dout_pwm_isp", "mout_pwm_isp", SCLK_DIV_ISP1, 28, 4),
> + DIV(0, "dout_uart_isp", "mout_uart_isp", SCLK_DIV_ISP1, 24, 4),
> + DIV(0, "dout_spi0_isp", "mout_spi0_isp", SCLK_DIV_ISP1, 16, 4),
> + DIV(0, "dout_spi1_isp", "mout_spi1_isp", SCLK_DIV_ISP1, 20, 4),
> + DIV(0, "dout_spi0_isp_pre", "dout_spi0_isp", SCLK_DIV_ISP1, 0, 8),
> + DIV(0, "dout_spi1_isp_pre", "dout_spi1_isp", SCLK_DIV_ISP1, 8, 8),
> + DIV(0, "dout_isp_sensor0", "mout_isp_sensor", SCLK_DIV_ISP0, 8, 8),
> + DIV(0, "dout_isp_sensor1", "mout_isp_sensor", SCLK_DIV_ISP0, 16, 8),
> + DIV(0, "dout_isp_sensor2", "mout_isp_sensor", SCLK_DIV_ISP0, 24, 8),
> };
>
> static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> @@ -781,12 +900,18 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE(CLK_PCLK_TMU_GPU, "pclk_tmu_gpu", "aclk66_psgen",
> GATE_IP_PERIS, 22, 0, 0),
>
> + GATE(CLK_PCLK_GSCL0, "pclk_gscl0", "dout_gscl_blk_300",
> + GATE_IP_GSCL0, 14, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_GSCL1, "pclk_gscl1", "dout_gscl_blk_300",
> + GATE_IP_GSCL0, 15, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_ACLK_GSCL0, "aclk_gscl0", "mout_user_aclk300_gscl",
> GATE_IP_GSCL0, 0, 0, 0),
> GATE(CLK_ACLK_GSCL1, "aclk_gscl1", "mout_user_aclk300_gscl",
> GATE_IP_GSCL0, 1, 0, 0),
> GATE(CLK_ACLK_FIMC_3AA, "aclk_fimc_3aa", "aclk333_432_gscl",
> GATE_IP_GSCL0, 4, 0, 0),
> + GATE(CLK_PCLK_FIMC_3AA, "pclk_fimc_3aa", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 9, 0, 0),
>
> GATE(CLK_SMMU_3AA, "smmu_3aa", "dout_gscl_blk_333",
> GATE_IP_GSCL1, 2, 0, 0),
> @@ -818,9 +943,13 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE_BUS_DISP1, 19, 0, 0),
> GATE(CLK_SMMU_FIMD1M0, "smmu_fimd1m0", "dout_disp1_blk",
> GATE_IP_DISP1, 7, 0, 0),
> + GATE(CLK_SMMU_FIMD1M1, "smmu_fimd1m1", "dout_disp1_blk",
> + GATE_IP_DISP1, 8, 0, 0),
>
> GATE(CLK_ACLK_MFC, "aclk_mfc", "mout_user_aclk333",
> GATE_BUS_MFC, 0, 0, 0),
> + GATE(CLK_PCLK_MFC, "pclk_mfc", "dout_mfc_blk",
> + GATE_BUS_MFC, 16, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_SMMU_MFCL, "smmu_mfcl", "dout_mfc_blk", GATE_IP_MFC, 1, 0, 0),
> GATE(CLK_SMMU_MFCR, "smmu_mfcr", "dout_mfc_blk", GATE_IP_MFC, 2, 0, 0),
> GATE(CLK_G3D, "clk_g3d", "mout_user_aclk_g3d",
> @@ -828,14 +957,24 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
>
> GATE(CLK_ACLK_ROTATOR, "aclk_rotator", "mout_user_aclk266",
> GATE_IP_GEN, 1, 0, 0),
> + GATE(CLK_PCLK_ROTATOR, "pclk_rotator", "dout_gen_blk",
> + GATE_BUS_GEN, 13, 0, 0),
> GATE(CLK_ACLK_JPEG, "aclk_jpeg", "aclk300_jpeg", GATE_IP_GEN, 2, 0, 0),
> GATE(CLK_ACLK_JPEG2, "aclk_jpeg2", "aclk300_jpeg",
> GATE_IP_GEN, 3, 0, 0),
> + GATE(CLK_ACLK_MDMA0, "aclk_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 1, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_ACLK_MDMA1, "aclk_mdma1", "mout_user_aclk266",
> GATE_IP_GEN, 4, 0, 0),
> GATE(CLK_SMMU_ROTATOR, "smmu_rotator", "dout_gen_blk",
> GATE_IP_GEN, 6, 0, 0),
> + GATE(CLK_ACLK_SMMU_MDMA0, "aclk_smmu_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 5, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SMMU_MDMA0, "smmu_mdma0", "aclk266_g2d",
> + GATE_BUS_G2D, 20, CLK_IGNORE_UNUSED, 0),
> GATE(CLK_SMMU_JPEG, "smmu_jpeg", "dout_jpg_blk", GATE_IP_GEN, 7, 0, 0),
> + GATE(CLK_SMMU_JPEG2, "smmu_jpeg2", "dout_jpg_blk",
> + GATE_BUS_GEN, 28, 0, 0),
> GATE(CLK_SMMU_MDMA1, "smmu_mdma1", "dout_gen_blk",
> GATE_IP_GEN, 9, 0, 0),
>
> @@ -845,14 +984,92 @@ static struct samsung_gate_clock exynos5420_gate_clks[] __initdata = {
> GATE_BUS_MSCL, 1, 0, 0),
> GATE(CLK_ACLK_MSCL2, "aclk_mscl2", "aclk400_mscl",
> GATE_BUS_MSCL, 2, 0, 0),
> + GATE(CLK_PCLK_MSCL0, "pclk_mscl0", "dout_mscl_blk",
> + GATE_BUS_MSCL, 8, 0, 0),
> + GATE(CLK_PCLK_MSCL1, "pclk_mscl1", "dout_mscl_blk",
> + GATE_BUS_MSCL, 9, 0, 0),
> + GATE(CLK_PCLK_MSCL2, "pclk_mscl2", "dout_mscl_blk",
> + GATE_BUS_MSCL, 10, 0, 0),
> GATE(CLK_SMMU_MSCL0, "smmu_mscl0", "dout_mscl_blk",
> GATE_IP_MSCL, 8, 0, 0),
> GATE(CLK_SMMU_MSCL1, "smmu_mscl1", "dout_mscl_blk",
> GATE_IP_MSCL, 9, 0, 0),
> GATE(CLK_SMMU_MSCL2, "smmu_mscl2", "dout_mscl_blk",
> GATE_IP_MSCL, 10, 0, 0),
> - GATE(CLK_SMMU_MIXER, "smmu_mixer", "dout_disp1_blk",
> - GATE_IP_DISP1, 9, 0, 0),
> + GATE(CLK_ACLK_SMMU_MIXER, "aclk_smmu_mixer", "aclk200_disp1",
> + GATE_BUS_DISP1, 9, CLK_IGNORE_UNUSED, 0),
> +
> + /* aclk333 gates internal MFC busses and should not be gated. */
> + /* aclk266 also gates other IPs in psgen. It should not be gated. */
> + GATE(CLK_ACLK266, "aclk266", "mout_user_aclk266",
> + GATE_BUS_NOC, 22, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK200_DISP1, "aclk200_disp1", "mout_aclk200_disp1",
> + GATE_BUS_TOP, 18, CLK_IGNORE_UNUSED, 0),
> + /* gating of aclk300_gscl causes system hang. It should not be gated. */
> + GATE(CLK_ACLK400_MSCL, "aclk400_mscl", "mout_user_aclk400_mscl",
> + GATE_BUS_TOP, 17, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK300_DISP1, "aclk300_disp1", "mout_user_aclk300_disp1",
> + SRC_MASK_TOP2, 24, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK266_ISP, "aclk266_isp", "mout_user_aclk266_isp",
> + GATE_BUS_TOP, 13, 0, 0),
> + GATE(CLK_ACLK400_ISP, "aclk400_isp", "mout_user_aclk400_isp",
> + GATE_BUS_TOP, 16, 0, 0),
> + GATE(CLK_ACLK333_432_ISP0, "aclk333_432_isp0",
> + "mout_user_aclk333_432_isp0", GATE_BUS_TOP, 5, 0, 0),
> + GATE(CLK_ACLK333_432_ISP, "aclk333_432_isp",
> + "mout_user_aclk333_432_isp", GATE_BUS_TOP, 8, 0, 0),
> + /* misc: mct, adc, chipid, wdt, rtc, sysreg etc */
> + GATE(CLK_PCLK_MC, "pclk_mc", "aclk66_psgen", GATE_BUS_GEN, 12, 0, 0),
> + GATE(CLK_PCLK_TOP_RTC, "pclk_top_rtc", "aclk66_psgen",
> + GATE_IP_GEN, 5, 0, 0),
> + GATE(CLK_SCLK_HSIC_12M, "sclk_hsic_12m", "ffactor_hsic_12m",
> + GATE_BUS_TOP, 29, 0, 0),
> + GATE(CLK_SCLK_MPHY_IXTAL24, "sclk_mphy_ixtal24", "mphy_refclk_ixtal24",
> + GATE_BUS_TOP, 28, 0, 0),
> + /*
> + * HACK: When aclk_fimd1 is gated, aclk300_disp1 also gets gated as
> + * aclk_fimd1 is the only child node. aclk300_disp1 is connected
> + * to hdmi, mixer IPs through internal busses. gating of aclk300_disp1
> + * breaks HDMI S2R.
> + */
> + GATE(CLK_PCLK_HDMIPHY, "pclk_hdmiphy", "dout_disp1_blk",
> + GATE_BUS_DISP1, 15, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SCLK_MPHY_REFCLK, "sclk_mphy_refclk", "dout_mphy_refclk",
> + GATE_BUS_TOP, 30, 0, 0),
> + GATE(CLK_ACLK_FIMC_LITE0, "aclk_fimc_lite0", "aclk333_432_gscl",
> + GATE_IP_GSCL0, 5, 0, 0),
> + GATE(CLK_ACLK_FIMC_LITE1, "aclk_fimc_lite1", "aclk333_432_gscl",
> + GATE_IP_GSCL0, 6, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE0, "pclk_fimc_lite0", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 10, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE1, "pclk_fimc_lite1", "dout_gscl_blk_333",
> + GATE_IP_GSCL0, 11, 0, 0),
> + GATE(CLK_PCLK_FIMC_LITE3, "pclk_fimc_lite3", "dout_gscl_blk_333",
> + GATE_BUS_GSCL0, 13, 0, 0),
> + /* g2d */
> + GATE(CLK_ACLK_G2D, "aclk_g2d", "aclk333_g2d",
> + GATE_BUS_G2D, 3, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_PCLK_G2D, "pclk_g2d", "aclk266_g2d",
> + GATE_BUS_G2D, 19, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_ACLK_SMMU_G2D, "aclk_smmu_g2d", "aclk333_g2d",
> + GATE_BUS_G2D, 7, CLK_IGNORE_UNUSED, 0),
> + GATE(CLK_SMMU_G2D, "smmu_g2d", "aclk266_g2d",
> + GATE_BUS_G2D, 22, CLK_IGNORE_UNUSED, 0),
> + /* ISP */
> + GATE(CLK_SCLK_PWM_ISP, "sclk_pwm_isp", "dout_pwm_isp",
> + GATE_TOP_SCLK_ISP, 3, 0, 0),
> + GATE(CLK_SCLK_UART_ISP, "sclk_uart_isp", "dout_uart_isp",
> + GATE_TOP_SCLK_ISP, 0, 0, 0),
> + GATE(CLK_SCLK_SPI0_ISP, "sclk_spi0_isp", "dout_spi0_isp_pre",
> + GATE_TOP_SCLK_ISP, 1, 0, 0),
> + GATE(CLK_SCLK_SPI1_ISP, "sclk_spi1_isp", "dout_spi1_isp_pre",
> + GATE_TOP_SCLK_ISP, 2, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "dout_isp_sensor0",
> + GATE_TOP_SCLK_ISP, 4, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "dout_isp_sensor1",
> + GATE_TOP_SCLK_ISP, 8, 0, 0),
> + GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "dout_isp_sensor2",
> + GATE_TOP_SCLK_ISP, 12, 0, 0),
>
> /* SSS */
> GATE(CLK_ACLK_SSS, "aclk_sss", "aclk266_g2d", GATE_IP_G2D, 2, 0, 0),
>
This is really hard to review. May I ask you to split it into separate
patch adding clocks for each block mentioned in description, please?
Also, as I mentioned in my comments to patches 1/7 and 2/7, respective
IDs and registers being added should be in respective patches.
Best regards,
Tomasz
next prev parent reply other threads:[~2014-04-15 17:56 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 11:07 [PATCH v2 0/7] exynos5420: clock file cleanup Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-03-27 11:07 ` [PATCH v2 1/7] clk: exynos5420: Add more clock register offsets Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-04-15 16:45 ` Tomasz Figa
2014-04-15 16:45 ` Tomasz Figa
2014-04-20 7:27 ` Shaik Ameer Basha
2014-04-20 7:27 ` Shaik Ameer Basha
2014-03-27 11:07 ` [PATCH v2 2/7] clk: exynos5420: Add more clock IDs Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-04-15 16:50 ` Tomasz Figa
2014-04-15 16:50 ` Tomasz Figa
2014-04-20 7:30 ` Shaik Ameer Basha
2014-04-20 7:30 ` Shaik Ameer Basha
2014-03-27 11:07 ` [PATCH v2 3/7] clk: exynos5420: Rename " Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-03-27 19:49 ` Gerhard Sittig
2014-03-27 19:49 ` Gerhard Sittig
2014-04-01 4:42 ` Shaik Ameer Basha
2014-04-01 4:42 ` Shaik Ameer Basha
2014-04-01 4:44 ` Shaik Ameer Basha
2014-04-01 4:44 ` Shaik Ameer Basha
2014-04-15 17:03 ` Tomasz Figa
2014-04-15 17:03 ` Tomasz Figa
2014-04-20 8:32 ` Shaik Ameer Basha
2014-04-20 8:32 ` Shaik Ameer Basha
2014-03-27 11:07 ` [PATCH v2 4/7] clk: exynos5420: Rename clock names Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-04-15 17:05 ` Tomasz Figa
2014-04-15 17:05 ` Tomasz Figa
2014-03-27 11:07 ` [PATCH v2 5/7] clk: exynos5420: Add missing clocks Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-04-15 17:56 ` Tomasz Figa [this message]
2014-04-15 17:56 ` Tomasz Figa
2014-03-27 11:07 ` [PATCH v2 6/7] clk: exynos5420: Add more registers to restore list Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
2014-03-27 11:07 ` [PATCH v2 7/7] ARM: dts: update macros in clock bindings for exynos5420 Shaik Ameer Basha
2014-03-27 11:07 ` Shaik Ameer Basha
[not found] ` <1395918470-16374-8-git-send-email-shaik.ameer-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org>
2014-04-15 18:01 ` Tomasz Figa
2014-04-15 18:01 ` Tomasz Figa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=534D72D7.4000902@gmail.com \
--to=tomasz.figa@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=joshi@samsung.com \
--cc=kgene.kim@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=mturquette@linaro.org \
--cc=r.sh.open@gmail.com \
--cc=rahul.sharma@samsung.com \
--cc=shaik.ameer@samsung.com \
--cc=shaik.samsung@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.