linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: lonsn2005@gmail.com (Lonsn)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] ARM: S5PV210: Fix PL330 DMA controller clkdev entries
Date: Sat, 02 Mar 2013 22:56:38 +0800	[thread overview]
Message-ID: <51321326.6050800@gmail.com> (raw)
In-Reply-To: <1362227906-13921-1-git-send-email-s.nawrocki@samsung.com>

? 2013/3/2 20:38, Sylwester Nawrocki ??:
> Since the DMA controller clocks are managed at amba bus level,
> the PL330 device clocks handling has been removed from the driver
> in commit 7c71b8eb268ee38235f7e924d943ea9d90e59469
> DMA: PL330: Remove redundant runtime_suspend/resume functions
>
> However, this left the S5PV210 platform with only clkdev entries
> linking "apb_pclk" clock conn_id to a dummy clock, rather than
> to corresponding platform PL330 DMAC clock.
> As a result the DMA controller is now attempted to be used on
> S5PV210 with the clock disabled and the driver fails with an
> error:
>
> dma-pl330 dma-pl330.0: PERIPH_ID 0x0, PCELL_ID 0x0 !
> dma-pl330: probe of dma-pl330.0 failed with error -22
> dma-pl330 dma-pl330.1: PERIPH_ID 0x0, PCELL_ID 0x0 !
> dma-pl330: probe of dma-pl330.1 failed with error -22
>
> Fix this by adding "apb_pclk" clkdev entries for the Peripheral
> DMA controllers 0/1 and removing the dummy apb_pclk clock.
>
> Reported-by: Lonsn <lonsn2005@gmail.com>
> Cc: Inderpal Singh <inderpal.singh@linaro.org>
> Cc: Boojin Kim <boojin.kim@samsung.com>
> Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
> ---
>
> Lonsn, could you check if this patch solves the problem for you,
> please ? Any Tested-by are welcome.
> I didn't test this patch on any hardware yet. Once it is confirmed
> I would resend it, also for stable kernels. It seems this issue is
> present since v3.7.
>
Sylwester, I have tested this patch and confirmed it's OK in my S5PV210 
platform.

> Thanks.
> ---
>   arch/arm/mach-s5pv210/clock.c |   36 ++++++++++++++++++------------------
>   1 files changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c
> index fcdf52d..f051f53 100644
> --- a/arch/arm/mach-s5pv210/clock.c
> +++ b/arch/arm/mach-s5pv210/clock.c
> @@ -214,11 +214,6 @@ static struct clk clk_pcmcdclk2 = {
>   	.name		= "pcmcdclk",
>   };
>
> -static struct clk dummy_apb_pclk = {
> -	.name		= "apb_pclk",
> -	.id		= -1,
> -};
> -
>   static struct clk *clkset_vpllsrc_list[] = {
>   	[0] = &clk_fin_vpll,
>   	[1] = &clk_sclk_hdmi27m,
> @@ -305,18 +300,6 @@ static struct clk_ops clk_fout_apll_ops = {
>
>   static struct clk init_clocks_off[] = {
>   	{
> -		.name		= "dma",
> -		.devname	= "dma-pl330.0",
> -		.parent		= &clk_hclk_psys.clk,
> -		.enable		= s5pv210_clk_ip0_ctrl,
> -		.ctrlbit	= (1 << 3),
> -	}, {
> -		.name		= "dma",
> -		.devname	= "dma-pl330.1",
> -		.parent		= &clk_hclk_psys.clk,
> -		.enable		= s5pv210_clk_ip0_ctrl,
> -		.ctrlbit	= (1 << 4),
> -	}, {
>   		.name		= "rot",
>   		.parent		= &clk_hclk_dsys.clk,
>   		.enable		= s5pv210_clk_ip0_ctrl,
> @@ -573,6 +556,20 @@ static struct clk clk_hsmmc3 = {
>   	.ctrlbit	= (1<<19),
>   };
>
> +static struct clk clk_pdma0 = {
> +	.name		= "pdma0",
> +	.parent		= &clk_hclk_psys.clk,
> +	.enable		= s5pv210_clk_ip0_ctrl,
> +	.ctrlbit	= (1 << 3),
> +};
> +
> +static struct clk clk_pdma1 = {
> +	.name		= "pdma1",
> +	.parent		= &clk_hclk_psys.clk,
> +	.enable		= s5pv210_clk_ip0_ctrl,
> +	.ctrlbit	= (1 << 4),
> +};
> +
>   static struct clk *clkset_uart_list[] = {
>   	[6] = &clk_mout_mpll.clk,
>   	[7] = &clk_mout_epll.clk,
> @@ -1075,6 +1072,8 @@ static struct clk *clk_cdev[] = {
>   	&clk_hsmmc1,
>   	&clk_hsmmc2,
>   	&clk_hsmmc3,
> +	&clk_pdma0,
> +	&clk_pdma1,
>   };
>
>   /* Clock initialisation code */
> @@ -1333,6 +1332,8 @@ static struct clk_lookup s5pv210_clk_lookup[] = {
>   	CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
>   	CLKDEV_INIT("s5pv210-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
>   	CLKDEV_INIT("s5pv210-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
> +	CLKDEV_INIT("dma-pl330.0", "apb_pclk", &clk_pdma0),
> +	CLKDEV_INIT("dma-pl330.1", "apb_pclk", &clk_pdma1),
>   };
>
>   void __init s5pv210_register_clocks(void)
> @@ -1361,6 +1362,5 @@ void __init s5pv210_register_clocks(void)
>   	for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++)
>   		s3c_disable_clocks(clk_cdev[ptr], 1);
>
> -	s3c24xx_register_clock(&dummy_apb_pclk);
>   	s3c_pwmclk_init();
>   }
>

  reply	other threads:[~2013-03-02 14:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-02 12:38 [PATCH] ARM: S5PV210: Fix PL330 DMA controller clkdev entries Sylwester Nawrocki
2013-03-02 14:56 ` Lonsn [this message]
2013-03-04 13:00   ` Kukjin Kim
2013-03-04 13:54     ` Sylwester Nawrocki
2013-03-07 11:08       ` Kukjin Kim

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=51321326.6050800@gmail.com \
    --to=lonsn2005@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).