All of lore.kernel.org
 help / color / mirror / Atom feed
From: daniel.lezcano@linaro.org (Daniel Lezcano)
To: linux-arm-kernel@lists.infradead.org
Subject: [v.3] clocksource:clps711x-timer:- Unmap a region obtained by remap.
Date: Wed, 24 Aug 2016 16:21:01 +0200	[thread overview]
Message-ID: <57BDAD4D.7060602@linaro.org> (raw)
In-Reply-To: <1472047821-5539-1-git-send-email-arvind.yadav.cs@gmail.com>

On 08/24/2016 04:10 PM, Arvind Yadav wrote:
> iounmap frees the mapping when timer id is not matching.
> 
> Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>

What is the difference with the V2 ?

> ---
>  drivers/clocksource/clps711x-timer.c | 41 +++++++++++++++++++-----------------
>  1 file changed, 22 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/clocksource/clps711x-timer.c b/drivers/clocksource/clps711x-timer.c
> index 24db6d6..784c000 100644
> --- a/drivers/clocksource/clps711x-timer.c
> +++ b/drivers/clocksource/clps711x-timer.c
> @@ -33,14 +33,7 @@ static u64 notrace clps711x_sched_clock_read(void)
>  
>  static int __init _clps711x_clksrc_init(struct clk *clock, void __iomem *base)
>  {
> -	unsigned long rate;
> -
> -	if (!base)
> -		return -ENOMEM;
> -	if (IS_ERR(clock))
> -		return PTR_ERR(clock);
> -
> -	rate = clk_get_rate(clock);
> +	unsigned long rate = clk_get_rate(clock);
>  
>  	tcd = base;
>  
> @@ -67,13 +60,6 @@ static int __init _clps711x_clkevt_init(struct clk *clock, void __iomem *base,
>  	struct clock_event_device *clkevt;
>  	unsigned long rate;
>  
> -	if (!irq)
> -		return -EINVAL;
> -	if (!base)
> -		return -ENOMEM;
> -	if (IS_ERR(clock))
> -		return PTR_ERR(clock);
> -
>  	clkevt = kzalloc(sizeof(*clkevt), GFP_KERNEL);
>  	if (!clkevt)
>  		return -ENOMEM;
> @@ -106,16 +92,33 @@ void __init clps711x_clksrc_init(void __iomem *tc1_base, void __iomem *tc2_base,
>  #ifdef CONFIG_CLKSRC_OF
>  static int __init clps711x_timer_init(struct device_node *np)
>  {
> -	unsigned int irq = irq_of_parse_and_map(np, 0);
> -	struct clk *clock = of_clk_get(np, 0);
> -	void __iomem *base = of_iomap(np, 0);
> +	unsigned int irq;
> +	struct clk *clock;
> +	void __iomem *base;
> +	int ret;
> +
> +	clock = of_clk_get(np, 0);
> +	if (IS_ERR(clock))
> +		return PTR_ERR(clock);
> +
> +	base = of_iomap(np, 0);
> +	if (!base)
> +		return -ENOMEM;
>  
>  	switch (of_alias_get_id(np, "timer")) {
>  	case CLPS711X_CLKSRC_CLOCKSOURCE:
>  		return _clps711x_clksrc_init(clock, base);
>  	case CLPS711X_CLKSRC_CLOCKEVENT:
> -		return _clps711x_clkevt_init(clock, base, irq);
> +		irq = irq_of_parse_and_map(np, 0);
> +		if (!irq)
> +			return -EINVAL;
> +
> +		ret = _clps711x_clkevt_init(clock, base, irq);
> +		if (ret)
> +			iounmap(base);
> +		return ret;
>  	default:
> +		iounmap(base);
>  		return -EINVAL;
>  	}
>  }
> 


-- 
 <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Arvind Yadav <arvind.yadav.cs@gmail.com>, tglx@linutronix.de
Cc: shc_work@mail.ru, linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [v.3] clocksource:clps711x-timer:- Unmap a region obtained by remap.
Date: Wed, 24 Aug 2016 16:21:01 +0200	[thread overview]
Message-ID: <57BDAD4D.7060602@linaro.org> (raw)
In-Reply-To: <1472047821-5539-1-git-send-email-arvind.yadav.cs@gmail.com>

On 08/24/2016 04:10 PM, Arvind Yadav wrote:
> iounmap frees the mapping when timer id is not matching.
> 
> Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>

What is the difference with the V2 ?

> ---
>  drivers/clocksource/clps711x-timer.c | 41 +++++++++++++++++++-----------------
>  1 file changed, 22 insertions(+), 19 deletions(-)
> 
> diff --git a/drivers/clocksource/clps711x-timer.c b/drivers/clocksource/clps711x-timer.c
> index 24db6d6..784c000 100644
> --- a/drivers/clocksource/clps711x-timer.c
> +++ b/drivers/clocksource/clps711x-timer.c
> @@ -33,14 +33,7 @@ static u64 notrace clps711x_sched_clock_read(void)
>  
>  static int __init _clps711x_clksrc_init(struct clk *clock, void __iomem *base)
>  {
> -	unsigned long rate;
> -
> -	if (!base)
> -		return -ENOMEM;
> -	if (IS_ERR(clock))
> -		return PTR_ERR(clock);
> -
> -	rate = clk_get_rate(clock);
> +	unsigned long rate = clk_get_rate(clock);
>  
>  	tcd = base;
>  
> @@ -67,13 +60,6 @@ static int __init _clps711x_clkevt_init(struct clk *clock, void __iomem *base,
>  	struct clock_event_device *clkevt;
>  	unsigned long rate;
>  
> -	if (!irq)
> -		return -EINVAL;
> -	if (!base)
> -		return -ENOMEM;
> -	if (IS_ERR(clock))
> -		return PTR_ERR(clock);
> -
>  	clkevt = kzalloc(sizeof(*clkevt), GFP_KERNEL);
>  	if (!clkevt)
>  		return -ENOMEM;
> @@ -106,16 +92,33 @@ void __init clps711x_clksrc_init(void __iomem *tc1_base, void __iomem *tc2_base,
>  #ifdef CONFIG_CLKSRC_OF
>  static int __init clps711x_timer_init(struct device_node *np)
>  {
> -	unsigned int irq = irq_of_parse_and_map(np, 0);
> -	struct clk *clock = of_clk_get(np, 0);
> -	void __iomem *base = of_iomap(np, 0);
> +	unsigned int irq;
> +	struct clk *clock;
> +	void __iomem *base;
> +	int ret;
> +
> +	clock = of_clk_get(np, 0);
> +	if (IS_ERR(clock))
> +		return PTR_ERR(clock);
> +
> +	base = of_iomap(np, 0);
> +	if (!base)
> +		return -ENOMEM;
>  
>  	switch (of_alias_get_id(np, "timer")) {
>  	case CLPS711X_CLKSRC_CLOCKSOURCE:
>  		return _clps711x_clksrc_init(clock, base);
>  	case CLPS711X_CLKSRC_CLOCKEVENT:
> -		return _clps711x_clkevt_init(clock, base, irq);
> +		irq = irq_of_parse_and_map(np, 0);
> +		if (!irq)
> +			return -EINVAL;
> +
> +		ret = _clps711x_clkevt_init(clock, base, irq);
> +		if (ret)
> +			iounmap(base);
> +		return ret;
>  	default:
> +		iounmap(base);
>  		return -EINVAL;
>  	}
>  }
> 


-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  reply	other threads:[~2016-08-24 14:21 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-24 14:10 [v.3] clocksource:clps711x-timer:- Unmap a region obtained by remap Arvind Yadav
2016-08-24 14:21 ` Daniel Lezcano [this message]
2016-08-24 14:21   ` Daniel Lezcano
2016-08-24 14:35   ` arvind Yadav
2016-08-24 14:35     ` arvind Yadav

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=57BDAD4D.7060602@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --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 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.