mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
8bd8974fcd
commit
60ed7951d0
|
@ -25,6 +25,13 @@
|
||||||
#include <asm/arch/init.h>
|
#include <asm/arch/init.h>
|
||||||
#include <asm/arch/portmux.h>
|
#include <asm/arch/portmux.h>
|
||||||
|
|
||||||
|
/* Oscillator frequencies. These are board-specific */
|
||||||
|
unsigned long at32_board_osc_rates[3] = {
|
||||||
|
[0] = 32768, /* 32.768 kHz on RTC osc */
|
||||||
|
[1] = 20000000, /* 20 MHz on osc0 */
|
||||||
|
[2] = 12000000, /* 12 MHz on osc1 */
|
||||||
|
};
|
||||||
|
|
||||||
/* Initialized by bootloader-specific startup code. */
|
/* Initialized by bootloader-specific startup code. */
|
||||||
struct tag *bootloader_tags __initdata;
|
struct tag *bootloader_tags __initdata;
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,12 @@
|
||||||
|
|
||||||
#include "atstk1000.h"
|
#include "atstk1000.h"
|
||||||
|
|
||||||
|
/* Oscillator frequencies. These are board specific */
|
||||||
|
unsigned long at32_board_osc_rates[3] = {
|
||||||
|
[0] = 32768, /* 32.768 kHz on RTC osc */
|
||||||
|
[1] = 20000000, /* 20 MHz on osc0 */
|
||||||
|
[2] = 12000000, /* 12 MHz on osc1 */
|
||||||
|
};
|
||||||
|
|
||||||
struct eth_addr {
|
struct eth_addr {
|
||||||
u8 addr[6];
|
u8 addr[6];
|
||||||
|
|
|
@ -27,6 +27,13 @@
|
||||||
|
|
||||||
#include "atstk1000.h"
|
#include "atstk1000.h"
|
||||||
|
|
||||||
|
/* Oscillator frequencies. These are board specific */
|
||||||
|
unsigned long at32_board_osc_rates[3] = {
|
||||||
|
[0] = 32768, /* 32.768 kHz on RTC osc */
|
||||||
|
[1] = 20000000, /* 20 MHz on osc0 */
|
||||||
|
[2] = 12000000, /* 12 MHz on osc1 */
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
|
#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
|
||||||
static struct at73c213_board_info at73c213_data = {
|
static struct at73c213_board_info at73c213_data = {
|
||||||
.ssc_id = 0,
|
.ssc_id = 0,
|
||||||
|
|
|
@ -29,6 +29,13 @@
|
||||||
|
|
||||||
#include "atstk1000.h"
|
#include "atstk1000.h"
|
||||||
|
|
||||||
|
/* Oscillator frequencies. These are board specific */
|
||||||
|
unsigned long at32_board_osc_rates[3] = {
|
||||||
|
[0] = 32768, /* 32.768 kHz on RTC osc */
|
||||||
|
[1] = 20000000, /* 20 MHz on osc0 */
|
||||||
|
[2] = 12000000, /* 12 MHz on osc1 */
|
||||||
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
|
#ifdef CONFIG_BOARD_ATSTK1000_EXTDAC
|
||||||
static struct at73c213_board_info at73c213_data = {
|
static struct at73c213_board_info at73c213_data = {
|
||||||
.ssc_id = 0,
|
.ssc_id = 0,
|
||||||
|
|
|
@ -93,19 +93,12 @@ static struct clk devname##_##_name = { \
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(pm_lock);
|
static DEFINE_SPINLOCK(pm_lock);
|
||||||
|
|
||||||
unsigned long at32ap7000_osc_rates[3] = {
|
|
||||||
[0] = 32768,
|
|
||||||
/* FIXME: these are ATSTK1002-specific */
|
|
||||||
[1] = 20000000,
|
|
||||||
[2] = 12000000,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct clk osc0;
|
static struct clk osc0;
|
||||||
static struct clk osc1;
|
static struct clk osc1;
|
||||||
|
|
||||||
static unsigned long osc_get_rate(struct clk *clk)
|
static unsigned long osc_get_rate(struct clk *clk)
|
||||||
{
|
{
|
||||||
return at32ap7000_osc_rates[clk->index];
|
return at32_board_osc_rates[clk->index];
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned long pll_get_rate(struct clk *clk, unsigned long control)
|
static unsigned long pll_get_rate(struct clk *clk, unsigned long control)
|
||||||
|
|
|
@ -8,6 +8,12 @@
|
||||||
|
|
||||||
#define GPIO_PIN_NONE (-1)
|
#define GPIO_PIN_NONE (-1)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Clock rates for various on-board oscillators. The number of entries
|
||||||
|
* in this array is chip-dependent.
|
||||||
|
*/
|
||||||
|
extern unsigned long at32_board_osc_rates[];
|
||||||
|
|
||||||
/* Add basic devices: system manager, interrupt controller, portmuxes, etc. */
|
/* Add basic devices: system manager, interrupt controller, portmuxes, etc. */
|
||||||
void at32_add_system_devices(void);
|
void at32_add_system_devices(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue