aboutsummaryrefslogtreecommitdiffstats
path: root/arch/avr32
diff options
context:
space:
mode:
authorAlex <mailinglist@miromico.ch>2008-03-17 09:55:06 -0400
committerHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2008-06-27 09:07:16 -0400
commit60ed7951d0c9bf8de8588384134f16474367b410 (patch)
tree42e97bace8d7e3c41b6a7f4c1c42a4bc48648645 /arch/avr32
parent8bd8974fcddc468d66bd67f33c578f37987b302e (diff)
avr32: Allow board to define oscillator rates
On our custom board we have other oscillator rates than on atngw100 and atstk100x. Currently these rates are hardcoded in arch/avr32/mach-at32ap/at32ap700x.c. This patch moves them into board specific code. Signed-off-by: Alex Raimondi <raimondi@miromico.ch> Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
Diffstat (limited to 'arch/avr32')
-rw-r--r--arch/avr32/boards/atngw100/setup.c7
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c6
-rw-r--r--arch/avr32/boards/atstk1000/atstk1003.c7
-rw-r--r--arch/avr32/boards/atstk1000/atstk1004.c7
-rw-r--r--arch/avr32/mach-at32ap/at32ap700x.c9
5 files changed, 28 insertions, 8 deletions
diff --git a/arch/avr32/boards/atngw100/setup.c b/arch/avr32/boards/atngw100/setup.c
index a398be284966..00ce961c52a5 100644
--- a/arch/avr32/boards/atngw100/setup.c
+++ b/arch/avr32/boards/atngw100/setup.c
@@ -25,6 +25,13 @@
25#include <asm/arch/init.h> 25#include <asm/arch/init.h>
26#include <asm/arch/portmux.h> 26#include <asm/arch/portmux.h>
27 27
28/* Oscillator frequencies. These are board-specific */
29unsigned long at32_board_osc_rates[3] = {
30 [0] = 32768, /* 32.768 kHz on RTC osc */
31 [1] = 20000000, /* 20 MHz on osc0 */
32 [2] = 12000000, /* 12 MHz on osc1 */
33};
34
28/* Initialized by bootloader-specific startup code. */ 35/* Initialized by bootloader-specific startup code. */
29struct tag *bootloader_tags __initdata; 36struct tag *bootloader_tags __initdata;
30 37
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index 000eb4220a12..0e1332686867 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -28,6 +28,12 @@
28 28
29#include "atstk1000.h" 29#include "atstk1000.h"
30 30
31/* Oscillator frequencies. These are board specific */
32unsigned long at32_board_osc_rates[3] = {
33 [0] = 32768, /* 32.768 kHz on RTC osc */
34 [1] = 20000000, /* 20 MHz on osc0 */
35 [2] = 12000000, /* 12 MHz on osc1 */
36};
31 37
32struct eth_addr { 38struct eth_addr {
33 u8 addr[6]; 39 u8 addr[6];
diff --git a/arch/avr32/boards/atstk1000/atstk1003.c b/arch/avr32/boards/atstk1000/atstk1003.c
index a0b223df35a2..ea109f435a83 100644
--- a/arch/avr32/boards/atstk1000/atstk1003.c
+++ b/arch/avr32/boards/atstk1000/atstk1003.c
@@ -27,6 +27,13 @@
27 27
28#include "atstk1000.h" 28#include "atstk1000.h"
29 29
30/* Oscillator frequencies. These are board specific */
31unsigned long at32_board_osc_rates[3] = {
32 [0] = 32768, /* 32.768 kHz on RTC osc */
33 [1] = 20000000, /* 20 MHz on osc0 */
34 [2] = 12000000, /* 12 MHz on osc1 */
35};
36
30#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC 37#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
31static struct at73c213_board_info at73c213_data = { 38static struct at73c213_board_info at73c213_data = {
32 .ssc_id = 0, 39 .ssc_id = 0,
diff --git a/arch/avr32/boards/atstk1000/atstk1004.c b/arch/avr32/boards/atstk1000/atstk1004.c
index e765a8652b3e..cbf09dd0db53 100644
--- a/arch/avr32/boards/atstk1000/atstk1004.c
+++ b/arch/avr32/boards/atstk1000/atstk1004.c
@@ -29,6 +29,13 @@
29 29
30#include "atstk1000.h" 30#include "atstk1000.h"
31 31
32/* Oscillator frequencies. These are board specific */
33unsigned long at32_board_osc_rates[3] = {
34 [0] = 32768, /* 32.768 kHz on RTC osc */
35 [1] = 20000000, /* 20 MHz on osc0 */
36 [2] = 12000000, /* 12 MHz on osc1 */
37};
38
32#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC 39#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
33static struct at73c213_board_info at73c213_data = { 40static struct at73c213_board_info at73c213_data = {
34 .ssc_id = 0, 41 .ssc_id = 0,
diff --git a/arch/avr32/mach-at32ap/at32ap700x.c b/arch/avr32/mach-at32ap/at32ap700x.c
index 0f24b4f85c17..34b56de4ea60 100644
--- a/arch/avr32/mach-at32ap/at32ap700x.c
+++ b/arch/avr32/mach-at32ap/at32ap700x.c
@@ -93,19 +93,12 @@ static struct clk devname##_##_name = { \
93 93
94static DEFINE_SPINLOCK(pm_lock); 94static DEFINE_SPINLOCK(pm_lock);
95 95
96unsigned long at32ap7000_osc_rates[3] = {
97 [0] = 32768,
98 /* FIXME: these are ATSTK1002-specific */
99 [1] = 20000000,
100 [2] = 12000000,
101};
102
103static struct clk osc0; 96static struct clk osc0;
104static struct clk osc1; 97static struct clk osc1;
105 98
106static unsigned long osc_get_rate(struct clk *clk) 99static unsigned long osc_get_rate(struct clk *clk)
107{ 100{
108 return at32ap7000_osc_rates[clk->index]; 101 return at32_board_osc_rates[clk->index];
109} 102}
110 103
111static unsigned long pll_get_rate(struct clk *clk, unsigned long control) 104static unsigned long pll_get_rate(struct clk *clk, unsigned long control)