Skip to content

Commit

Permalink
ARM: S3C24XX: add platform code for conversion to the common clock fr…
Browse files Browse the repository at this point in the history
…amework

This adds the necessary init functions to init the clocks from the common
clock framework and necessary CONFIG_SAMSUNG_CLOCK ifdefs around the legacy
clock code.

This also includes empty stubs for the *_setup_clocks functions that are
called from the cpufreq driver on resume.

Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Tomasz Figa <t.figa@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
  • Loading branch information
Heiko Stuebner authored and Kukjin Kim committed May 12, 2014
1 parent 3f7c01a commit 4659c53
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 1 deletion.
5 changes: 5 additions & 0 deletions arch/arm/mach-s3c24xx/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@ config PLAT_S3C24XX
help
Base platform code for any Samsung S3C24XX device

config S3C2410_COMMON_CLK
bool
help
Build the s3c2410 clock driver based on the common clock framework.

config S3C2410_COMMON_DCLK
bool
select REGMAP_MMIO
Expand Down
25 changes: 25 additions & 0 deletions arch/arm/mach-s3c24xx/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
#include <plat/cpu-freq.h>
#include <plat/pll.h>
#include <plat/pwm-core.h>
#include <plat/watchdog-reset.h>

#include "common.h"

Expand Down Expand Up @@ -533,6 +534,14 @@ struct platform_device s3c2443_device_dma = {
};
#endif

#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_CPU_S3C2410)
void __init s3c2410_init_clocks(int xtal)
{
s3c2410_common_clk_init(NULL, xtal, 0, S3C24XX_VA_CLKPWR);
samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
}
#endif

#ifdef CONFIG_CPU_S3C2412
void __init s3c2412_init_clocks(int xtal)
{
Expand All @@ -547,6 +556,22 @@ void __init s3c2416_init_clocks(int xtal)
}
#endif

#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_CPU_S3C2440)
void __init s3c2440_init_clocks(int xtal)
{
s3c2410_common_clk_init(NULL, xtal, 1, S3C24XX_VA_CLKPWR);
samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
}
#endif

#if defined(CONFIG_COMMON_CLK) && defined(CONFIG_CPU_S3C2442)
void __init s3c2442_init_clocks(int xtal)
{
s3c2410_common_clk_init(NULL, xtal, 2, S3C24XX_VA_CLKPWR);
samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
}
#endif

#ifdef CONFIG_CPU_S3C2443
void __init s3c2443_init_clocks(int xtal)
{
Expand Down
7 changes: 7 additions & 0 deletions arch/arm/mach-s3c24xx/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ extern void s3c244x_restart(enum reboot_mode mode, const char *cmd);
#ifdef CONFIG_CPU_S3C2440
extern int s3c2440_init(void);
extern void s3c2440_map_io(void);
extern void s3c2440_init_clocks(int xtal);
extern void s3c2440_init_irq(void);
#else
#define s3c2440_init NULL
Expand All @@ -86,6 +87,7 @@ extern void s3c2440_init_irq(void);
#ifdef CONFIG_CPU_S3C2442
extern int s3c2442_init(void);
extern void s3c2442_map_io(void);
extern void s3c2442_init_clocks(int xtal);
extern void s3c2442_init_irq(void);
#else
#define s3c2442_init NULL
Expand Down Expand Up @@ -116,6 +118,11 @@ extern struct platform_device s3c2443_device_dma;

extern struct platform_device s3c2410_device_dclk;

#ifdef CONFIG_S3C2410_COMMON_CLK
void __init s3c2410_common_clk_init(struct device_node *np, unsigned long xti_f,
int current_soc,
void __iomem *reg_base);
#endif
#ifdef CONFIG_S3C2412_COMMON_CLK
void __init s3c2412_common_clk_init(struct device_node *np, unsigned long xti_f,
unsigned long ext_f, void __iomem *reg_base);
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-s3c24xx/s3c2410.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ void __init s3c2410_map_io(void)
iotable_init(s3c2410_iodesc, ARRAY_SIZE(s3c2410_iodesc));
}

#ifdef CONFIG_SAMSUNG_CLOCK
void __init_or_cpufreq s3c2410_setup_clocks(void)
{
struct clk *xtal_clk;
Expand Down Expand Up @@ -142,6 +143,11 @@ void __init s3c2410_init_clocks(int xtal)
clkdev_add_table(s3c2410_clk_lookup, ARRAY_SIZE(s3c2410_clk_lookup));
samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
}
#else
void __init_or_cpufreq s3c2410_setup_clocks(void)
{
}
#endif

struct bus_type s3c2410_subsys = {
.name = "s3c2410-core",
Expand Down
3 changes: 2 additions & 1 deletion arch/arm/mach-s3c24xx/s3c2442.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@

#include "common.h"

#ifdef CONFIG_SAMSUNG_CLOCK
/* S3C2442 extended clock support */

static unsigned long s3c2442_camif_upll_round(struct clk *clk,
Expand Down Expand Up @@ -162,7 +163,7 @@ static __init int s3c2442_clk_init(void)
}

arch_initcall(s3c2442_clk_init);

#endif

static struct device s3c2442_dev = {
.bus = &s3c2442_subsys,
Expand Down
6 changes: 6 additions & 0 deletions arch/arm/mach-s3c24xx/s3c244x.c
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ void __init s3c244x_map_io(void)
s3c2410_device_dclk.name = "s3c2440-dclk";
}

#ifdef CONFIG_SAMSUNG_CLOCK
void __init_or_cpufreq s3c244x_setup_clocks(void)
{
struct clk *xtal_clk;
Expand Down Expand Up @@ -138,6 +139,11 @@ void __init s3c244x_init_clocks(int xtal)
s3c2410_baseclk_add();
samsung_wdt_reset_init(S3C24XX_VA_WATCHDOG);
}
#else
void __init_or_cpufreq s3c244x_setup_clocks(void)
{
}
#endif

/* Since the S3C2442 and S3C2440 share items, put both subsystems here */

Expand Down

0 comments on commit 4659c53

Please sign in to comment.