-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 273987 b: refs/heads/master c: c9477f3 h: refs/heads/master i: 273985: a3b25d4 273983: 9b745c5 v: v3
- Loading branch information
Kukjin Kim
committed
Oct 4, 2011
1 parent
e1a6b17
commit c4485c3
Showing
27 changed files
with
1,242 additions
and
230 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: c37b25046289e857918d25fd96aa441ea7929ad5 | ||
refs/heads/master: c9477f38cba225870862fd9e08868ae3d4abdfe0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
/* | ||
* linux/arch/arm/mach-exynos4/clock-exynos4210.c | ||
* | ||
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* http://www.samsung.com | ||
* | ||
* EXYNOS4210 - Clock support | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/err.h> | ||
#include <linux/clk.h> | ||
#include <linux/io.h> | ||
#include <linux/syscore_ops.h> | ||
|
||
#include <plat/cpu-freq.h> | ||
#include <plat/clock.h> | ||
#include <plat/cpu.h> | ||
#include <plat/pll.h> | ||
#include <plat/s5p-clock.h> | ||
#include <plat/clock-clksrc.h> | ||
#include <plat/exynos4.h> | ||
#include <plat/pm.h> | ||
|
||
#include <mach/hardware.h> | ||
#include <mach/map.h> | ||
#include <mach/regs-clock.h> | ||
#include <mach/exynos4-clock.h> | ||
|
||
static struct sleep_save exynos4210_clock_save[] = { | ||
SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||
SAVE_ITEM(S5P_CLKSRC_LCD1), | ||
SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||
SAVE_ITEM(S5P_CLKDIV_LCD1), | ||
SAVE_ITEM(S5P_CLKSRC_MASK_LCD1), | ||
SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4210), | ||
SAVE_ITEM(S5P_CLKGATE_IP_LCD1), | ||
SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210), | ||
}; | ||
|
||
static struct clksrc_clk *sysclks[] = { | ||
/* nothing here yet */ | ||
}; | ||
|
||
static int exynos4_clksrc_mask_lcd1_ctrl(struct clk *clk, int enable) | ||
{ | ||
return s5p_gatectrl(S5P_CLKSRC_MASK_LCD1, clk, enable); | ||
} | ||
|
||
static struct clksrc_clk clksrcs[] = { | ||
{ | ||
.clk = { | ||
.name = "sclk_sata", | ||
.id = -1, | ||
.enable = exynos4_clksrc_mask_fsys_ctrl, | ||
.ctrlbit = (1 << 24), | ||
}, | ||
.sources = &clkset_mout_corebus, | ||
.reg_src = { .reg = S5P_CLKSRC_FSYS, .shift = 24, .size = 1 }, | ||
.reg_div = { .reg = S5P_CLKDIV_FSYS0, .shift = 20, .size = 4 }, | ||
}, { | ||
.clk = { | ||
.name = "sclk_fimd", | ||
.devname = "exynos4-fb.1", | ||
.enable = exynos4_clksrc_mask_lcd1_ctrl, | ||
.ctrlbit = (1 << 0), | ||
}, | ||
.sources = &clkset_group, | ||
.reg_src = { .reg = S5P_CLKSRC_LCD1, .shift = 0, .size = 4 }, | ||
.reg_div = { .reg = S5P_CLKDIV_LCD1, .shift = 0, .size = 4 }, | ||
}, | ||
}; | ||
|
||
static struct clk init_clocks_off[] = { | ||
{ | ||
.name = "sataphy", | ||
.id = -1, | ||
.parent = &clk_aclk_133.clk, | ||
.enable = exynos4_clk_ip_fsys_ctrl, | ||
.ctrlbit = (1 << 3), | ||
}, { | ||
.name = "sata", | ||
.id = -1, | ||
.parent = &clk_aclk_133.clk, | ||
.enable = exynos4_clk_ip_fsys_ctrl, | ||
.ctrlbit = (1 << 10), | ||
}, { | ||
.name = "fimd", | ||
.devname = "exynos4-fb.1", | ||
.enable = exynos4_clk_ip_lcd1_ctrl, | ||
.ctrlbit = (1 << 0), | ||
}, | ||
}; | ||
|
||
#ifdef CONFIG_PM_SLEEP | ||
static int exynos4210_clock_suspend(void) | ||
{ | ||
s3c_pm_do_save(exynos4210_clock_save, ARRAY_SIZE(exynos4210_clock_save)); | ||
|
||
return 0; | ||
} | ||
|
||
static void exynos4210_clock_resume(void) | ||
{ | ||
s3c_pm_do_restore_core(exynos4210_clock_save, ARRAY_SIZE(exynos4210_clock_save)); | ||
} | ||
|
||
#else | ||
#define exynos4210_clock_suspend NULL | ||
#define exynos4210_clock_resume NULL | ||
#endif | ||
|
||
struct syscore_ops exynos4210_clock_syscore_ops = { | ||
.suspend = exynos4210_clock_suspend, | ||
.resume = exynos4210_clock_resume, | ||
}; | ||
|
||
void __init exynos4210_register_clocks(void) | ||
{ | ||
int ptr; | ||
|
||
clk_mout_mpll.reg_src.reg = S5P_CLKSRC_CPU; | ||
clk_mout_mpll.reg_src.shift = 8; | ||
clk_mout_mpll.reg_src.size = 1; | ||
|
||
for (ptr = 0; ptr < ARRAY_SIZE(sysclks); ptr++) | ||
s3c_register_clksrc(sysclks[ptr], 1); | ||
|
||
s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs)); | ||
|
||
s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | ||
s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | ||
|
||
register_syscore_ops(&exynos4210_clock_syscore_ops); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
/* | ||
* linux/arch/arm/mach-exynos4/clock-exynos4212.c | ||
* | ||
* Copyright (c) 2011 Samsung Electronics Co., Ltd. | ||
* http://www.samsung.com | ||
* | ||
* EXYNOS4212 - Clock support | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/err.h> | ||
#include <linux/clk.h> | ||
#include <linux/io.h> | ||
#include <linux/syscore_ops.h> | ||
|
||
#include <plat/cpu-freq.h> | ||
#include <plat/clock.h> | ||
#include <plat/cpu.h> | ||
#include <plat/pll.h> | ||
#include <plat/s5p-clock.h> | ||
#include <plat/clock-clksrc.h> | ||
#include <plat/exynos4.h> | ||
#include <plat/pm.h> | ||
|
||
#include <mach/hardware.h> | ||
#include <mach/map.h> | ||
#include <mach/regs-clock.h> | ||
#include <mach/exynos4-clock.h> | ||
|
||
static struct sleep_save exynos4212_clock_save[] = { | ||
SAVE_ITEM(S5P_CLKSRC_IMAGE), | ||
SAVE_ITEM(S5P_CLKDIV_IMAGE), | ||
SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212), | ||
SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212), | ||
}; | ||
|
||
static struct clk *clk_src_mpll_user_list[] = { | ||
[0] = &clk_fin_mpll, | ||
[1] = &clk_mout_mpll.clk, | ||
}; | ||
|
||
static struct clksrc_sources clk_src_mpll_user = { | ||
.sources = clk_src_mpll_user_list, | ||
.nr_sources = ARRAY_SIZE(clk_src_mpll_user_list), | ||
}; | ||
|
||
static struct clksrc_clk clk_mout_mpll_user = { | ||
.clk = { | ||
.name = "mout_mpll_user", | ||
}, | ||
.sources = &clk_src_mpll_user, | ||
.reg_src = { .reg = S5P_CLKSRC_CPU, .shift = 24, .size = 1 }, | ||
}; | ||
|
||
static struct clksrc_clk *sysclks[] = { | ||
&clk_mout_mpll_user, | ||
}; | ||
|
||
static struct clksrc_clk clksrcs[] = { | ||
/* nothing here yet */ | ||
}; | ||
|
||
static struct clk init_clocks_off[] = { | ||
/* nothing here yet */ | ||
}; | ||
|
||
#ifdef CONFIG_PM_SLEEP | ||
static int exynos4212_clock_suspend(void) | ||
{ | ||
s3c_pm_do_save(exynos4212_clock_save, ARRAY_SIZE(exynos4212_clock_save)); | ||
|
||
return 0; | ||
} | ||
|
||
static void exynos4212_clock_resume(void) | ||
{ | ||
s3c_pm_do_restore_core(exynos4212_clock_save, ARRAY_SIZE(exynos4212_clock_save)); | ||
} | ||
|
||
#else | ||
#define exynos4212_clock_suspend NULL | ||
#define exynos4212_clock_resume NULL | ||
#endif | ||
|
||
struct syscore_ops exynos4212_clock_syscore_ops = { | ||
.suspend = exynos4212_clock_suspend, | ||
.resume = exynos4212_clock_resume, | ||
}; | ||
|
||
void __init exynos4212_register_clocks(void) | ||
{ | ||
int ptr; | ||
|
||
/* usbphy1 is removed */ | ||
clkset_group_list[4] = NULL; | ||
|
||
/* mout_mpll_user is used */ | ||
clkset_group_list[6] = &clk_mout_mpll_user.clk; | ||
clkset_aclk_top_list[0] = &clk_mout_mpll_user.clk; | ||
|
||
clk_mout_mpll.reg_src.reg = S5P_CLKSRC_DMC; | ||
clk_mout_mpll.reg_src.shift = 12; | ||
clk_mout_mpll.reg_src.size = 1; | ||
|
||
for (ptr = 0; ptr < ARRAY_SIZE(sysclks); ptr++) | ||
s3c_register_clksrc(sysclks[ptr], 1); | ||
|
||
s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs)); | ||
|
||
s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | ||
s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | ||
|
||
register_syscore_ops(&exynos4212_clock_syscore_ops); | ||
} |
Oops, something went wrong.