* [PATCH] ARM: s3c2440: fix AC97 and camera clock registration
@ 2010-11-17 10:22 Fabian Godehardt
2010-11-25 8:01 ` Kukjin Kim
0 siblings, 1 reply; 3+ messages in thread
From: Fabian Godehardt @ 2010-11-17 10:22 UTC (permalink / raw)
To: linux-arm-kernel
This patch fixes 2 problems:
- it sets the correct bitmask of the AC97 flag on the control-bit field
- it increases the usage counter of both clocks because they get decreased
on clock registration (a few lines later)
Maybe it is a better idea to check the usage counter on clk_disable() so
it can not reach values <0.
Signed-off-by: Fabian Godehardt <fg@emlix.com>
---
arch/arm/mach-s3c2440/clock.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-s3c2440/clock.c b/arch/arm/mach-s3c2440/clock.c
index 3dc2426..0fc8461 100644
--- a/arch/arm/mach-s3c2440/clock.c
+++ b/arch/arm/mach-s3c2440/clock.c
@@ -93,6 +93,7 @@ static struct clk s3c2440_clk_cam = {
.id = -1,
.enable = s3c2410_clkcon_enable,
.ctrlbit = S3C2440_CLKCON_CAMERA,
+ .usage = 1,
};
static struct clk s3c2440_clk_cam_upll = {
@@ -108,7 +109,8 @@ static struct clk s3c2440_clk_ac97 = {
.name = "ac97",
.id = -1,
.enable = s3c2410_clkcon_enable,
- .ctrlbit = S3C2440_CLKCON_CAMERA,
+ .ctrlbit = S3C2440_CLKCON_AC97,
+ .usage = 1,
};
static int s3c2440_clk_add(struct sys_device *sysdev)
--
1.6.6.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH] ARM: s3c2440: fix AC97 and camera clock registration
2010-11-17 10:22 [PATCH] ARM: s3c2440: fix AC97 and camera clock registration Fabian Godehardt
@ 2010-11-25 8:01 ` Kukjin Kim
2010-11-29 6:39 ` Fabian Godehardt
0 siblings, 1 reply; 3+ messages in thread
From: Kukjin Kim @ 2010-11-25 8:01 UTC (permalink / raw)
To: linux-arm-kernel
Fabian Godehardt wrote:
>
> This patch fixes 2 problems:
> - it sets the correct bitmask of the AC97 flag on the control-bit field
> - it increases the usage counter of both clocks because they get
decreased
> on clock registration (a few lines later)
>
> Maybe it is a better idea to check the usage counter on clk_disable() so
> it can not reach values <0.
>
> Signed-off-by: Fabian Godehardt <fg@emlix.com>
> ---
> arch/arm/mach-s3c2440/clock.c | 4 +++-
> 1 files changed, 3 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/mach-s3c2440/clock.c b/arch/arm/mach-s3c2440/clock.c
> index 3dc2426..0fc8461 100644
> --- a/arch/arm/mach-s3c2440/clock.c
> +++ b/arch/arm/mach-s3c2440/clock.c
> @@ -93,6 +93,7 @@ static struct clk s3c2440_clk_cam = {
> .id = -1,
> .enable = s3c2410_clkcon_enable,
> .ctrlbit = S3C2440_CLKCON_CAMERA,
> + .usage = 1,
> };
>
> static struct clk s3c2440_clk_cam_upll = {
> @@ -108,7 +109,8 @@ static struct clk s3c2440_clk_ac97 = {
> .name = "ac97",
> .id = -1,
> .enable = s3c2410_clkcon_enable,
> - .ctrlbit = S3C2440_CLKCON_CAMERA,
> + .ctrlbit = S3C2440_CLKCON_AC97,
Ok.
> + .usage = 1,
> };
>
> static int s3c2440_clk_add(struct sys_device *sysdev)
> --
> 1.6.6.1
How about following for fix usage field?
diff --git a/arch/arm/mach-s3c2440/clock.c b/arch/arm/mach-s3c2440/clock.c
index 3dc2426..2f393cb 100644
--- a/arch/arm/mach-s3c2440/clock.c
+++ b/arch/arm/mach-s3c2440/clock.c
@@ -108,11 +108,12 @@ static struct clk s3c2440_clk_ac97 = {
.name = "ac97",
.id = -1,
.enable = s3c2410_clkcon_enable,
- .ctrlbit = S3C2440_CLKCON_CAMERA,
+ .ctrlbit = S3C2440_CLKCON_AC97,
};
static int s3c2440_clk_add(struct sys_device *sysdev)
{
+ unsigned long clkcon = __raw_readl(S3C2410_CLKCON);
struct clk *clock_upll;
struct clk *clock_h;
struct clk *clock_p;
@@ -130,6 +131,9 @@ static int s3c2440_clk_add(struct sys_device *sysdev)
s3c2440_clk_ac97.parent = clock_p;
s3c2440_clk_cam_upll.parent = clock_upll;
+ s3c2440_clk_cam.usage = clkcon & s3c2440_clk_cam.ctrlbit ? 1 : 0;
+ s3c2440_clk_ac97.usage = clkcon & s3c2440_clk_ac97.ctrlbit ? 1 : 0;
+
s3c24xx_register_clock(&s3c2440_clk_ac97);
s3c24xx_register_clock(&s3c2440_clk_cam);
s3c24xx_register_clock(&s3c2440_clk_cam_upll);
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH] ARM: s3c2440: fix AC97 and camera clock registration
2010-11-25 8:01 ` Kukjin Kim
@ 2010-11-29 6:39 ` Fabian Godehardt
0 siblings, 0 replies; 3+ messages in thread
From: Fabian Godehardt @ 2010-11-29 6:39 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
> How about following for fix usage field?
>
> diff --git a/arch/arm/mach-s3c2440/clock.c b/arch/arm/mach-s3c2440/clock.c
> index 3dc2426..2f393cb 100644
> --- a/arch/arm/mach-s3c2440/clock.c
> +++ b/arch/arm/mach-s3c2440/clock.c
> @@ -108,11 +108,12 @@ static struct clk s3c2440_clk_ac97 = {
> .name = "ac97",
> .id = -1,
> .enable = s3c2410_clkcon_enable,
> - .ctrlbit = S3C2440_CLKCON_CAMERA,
> + .ctrlbit = S3C2440_CLKCON_AC97,
> };
>
> static int s3c2440_clk_add(struct sys_device *sysdev)
> {
> + unsigned long clkcon = __raw_readl(S3C2410_CLKCON);
Yes, you are right. The clocks should be checked :).
> struct clk *clock_upll;
> struct clk *clock_h;
> struct clk *clock_p;
> @@ -130,6 +131,9 @@ static int s3c2440_clk_add(struct sys_device *sysdev)
> s3c2440_clk_ac97.parent = clock_p;
> s3c2440_clk_cam_upll.parent = clock_upll;
>
> + s3c2440_clk_cam.usage = clkcon & s3c2440_clk_cam.ctrlbit ? 1 : 0;
> + s3c2440_clk_ac97.usage = clkcon & s3c2440_clk_ac97.ctrlbit ? 1 : 0;
> +
> s3c24xx_register_clock(&s3c2440_clk_ac97);
> s3c24xx_register_clock(&s3c2440_clk_cam);
> s3c24xx_register_clock(&s3c2440_clk_cam_upll);
>
But in the following lines the clocks are disabled again. So if the usage was
set to '0' on the check above, we get '-1' again.
I would prefer to use your code and additionally do the check again before the
clocks are disabled. Something like this:
- clk_disable(&s3c2440_clk_ac97);
- clk_disable(&s3c2440_clk_cam);
+ if (s3c2440_clk_ac97.usage)
+ clk_disable(&s3c2440_clk_ac97);
+
+ if (s3c2440_clk_cam.usage)
+ clk_disable(&s3c2440_clk_cam);
Mit freundlichen Gr??en/With kind regards
Fabian Godehardt
--
Dipl.-Ing. (FH) Fabian Godehardt, emlix GmbH, http://www.emlix.com
Fon +49 551 30664-0, Fax -11, Bahnhofsallee 1b, 37081 G?ttingen, Germany
Sitz der Gesellschaft: G?ttingen, Amtsgericht G?ttingen HR B 3160
Gesch?ftsf?hrer: Dr. Uwe Kracke, Ust-IdNr.: DE 205 198 055
emlix - your embedded linux partner
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-11-29 6:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-17 10:22 [PATCH] ARM: s3c2440: fix AC97 and camera clock registration Fabian Godehardt
2010-11-25 8:01 ` Kukjin Kim
2010-11-29 6:39 ` Fabian Godehardt
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).