-
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.
[ARM] Add support for ARM RealView board
Support for RealView EB. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
- Loading branch information
Catalin Marinas
authored and
Russell King
committed
Oct 31, 2005
1 parent
e2f2e58
commit 8ad68bb
Showing
25 changed files
with
1,953 additions
and
4 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
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,11 @@ | ||
menu "RealView platform type" | ||
depends on ARCH_REALVIEW | ||
|
||
config MACH_REALVIEW_EB | ||
bool "Support RealView/EB platform" | ||
default n | ||
select ARM_GIC | ||
help | ||
Include support for the ARM(R) RealView Emulation Baseboard platform. | ||
|
||
endmenu |
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,6 @@ | ||
# | ||
# Makefile for the linux kernel. | ||
# | ||
|
||
obj-y := core.o clock.o | ||
obj-$(CONFIG_MACH_REALVIEW_EB) += realview_eb.o |
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,4 @@ | ||
zreladdr-y := 0x00008000 | ||
params_phys-y := 0x00000100 | ||
initrd_phys-y := 0x00800000 | ||
|
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,145 @@ | ||
/* | ||
* linux/arch/arm/mach-realview/clock.c | ||
* | ||
* Copyright (C) 2004 ARM Limited. | ||
* Written by Deep Blue Solutions Limited. | ||
* | ||
* 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/module.h> | ||
#include <linux/kernel.h> | ||
#include <linux/list.h> | ||
#include <linux/errno.h> | ||
#include <linux/err.h> | ||
|
||
#include <asm/semaphore.h> | ||
#include <asm/hardware/clock.h> | ||
#include <asm/hardware/icst307.h> | ||
|
||
#include "clock.h" | ||
|
||
static LIST_HEAD(clocks); | ||
static DECLARE_MUTEX(clocks_sem); | ||
|
||
struct clk *clk_get(struct device *dev, const char *id) | ||
{ | ||
struct clk *p, *clk = ERR_PTR(-ENOENT); | ||
|
||
down(&clocks_sem); | ||
list_for_each_entry(p, &clocks, node) { | ||
if (strcmp(id, p->name) == 0 && try_module_get(p->owner)) { | ||
clk = p; | ||
break; | ||
} | ||
} | ||
up(&clocks_sem); | ||
|
||
return clk; | ||
} | ||
EXPORT_SYMBOL(clk_get); | ||
|
||
void clk_put(struct clk *clk) | ||
{ | ||
module_put(clk->owner); | ||
} | ||
EXPORT_SYMBOL(clk_put); | ||
|
||
int clk_enable(struct clk *clk) | ||
{ | ||
return 0; | ||
} | ||
EXPORT_SYMBOL(clk_enable); | ||
|
||
void clk_disable(struct clk *clk) | ||
{ | ||
} | ||
EXPORT_SYMBOL(clk_disable); | ||
|
||
int clk_use(struct clk *clk) | ||
{ | ||
return 0; | ||
} | ||
EXPORT_SYMBOL(clk_use); | ||
|
||
void clk_unuse(struct clk *clk) | ||
{ | ||
} | ||
EXPORT_SYMBOL(clk_unuse); | ||
|
||
unsigned long clk_get_rate(struct clk *clk) | ||
{ | ||
return clk->rate; | ||
} | ||
EXPORT_SYMBOL(clk_get_rate); | ||
|
||
long clk_round_rate(struct clk *clk, unsigned long rate) | ||
{ | ||
return rate; | ||
} | ||
EXPORT_SYMBOL(clk_round_rate); | ||
|
||
int clk_set_rate(struct clk *clk, unsigned long rate) | ||
{ | ||
int ret = -EIO; | ||
|
||
if (clk->setvco) { | ||
struct icst307_vco vco; | ||
|
||
vco = icst307_khz_to_vco(clk->params, rate / 1000); | ||
clk->rate = icst307_khz(clk->params, vco) * 1000; | ||
|
||
printk("Clock %s: setting VCO reg params: S=%d R=%d V=%d\n", | ||
clk->name, vco.s, vco.r, vco.v); | ||
|
||
clk->setvco(clk, vco); | ||
ret = 0; | ||
} | ||
return ret; | ||
} | ||
EXPORT_SYMBOL(clk_set_rate); | ||
|
||
/* | ||
* These are fixed clocks. | ||
*/ | ||
static struct clk kmi_clk = { | ||
.name = "KMIREFCLK", | ||
.rate = 24000000, | ||
}; | ||
|
||
static struct clk uart_clk = { | ||
.name = "UARTCLK", | ||
.rate = 24000000, | ||
}; | ||
|
||
static struct clk mmci_clk = { | ||
.name = "MCLK", | ||
.rate = 33000000, | ||
}; | ||
|
||
int clk_register(struct clk *clk) | ||
{ | ||
down(&clocks_sem); | ||
list_add(&clk->node, &clocks); | ||
up(&clocks_sem); | ||
return 0; | ||
} | ||
EXPORT_SYMBOL(clk_register); | ||
|
||
void clk_unregister(struct clk *clk) | ||
{ | ||
down(&clocks_sem); | ||
list_del(&clk->node); | ||
up(&clocks_sem); | ||
} | ||
EXPORT_SYMBOL(clk_unregister); | ||
|
||
static int __init clk_init(void) | ||
{ | ||
clk_register(&kmi_clk); | ||
clk_register(&uart_clk); | ||
clk_register(&mmci_clk); | ||
return 0; | ||
} | ||
arch_initcall(clk_init); |
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,25 @@ | ||
/* | ||
* linux/arch/arm/mach-realview/clock.h | ||
* | ||
* Copyright (C) 2004 ARM Limited. | ||
* Written by Deep Blue Solutions Limited. | ||
* | ||
* 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. | ||
*/ | ||
struct module; | ||
struct icst307_params; | ||
|
||
struct clk { | ||
struct list_head node; | ||
unsigned long rate; | ||
struct module *owner; | ||
const char *name; | ||
const struct icst307_params *params; | ||
void *data; | ||
void (*setvco)(struct clk *, struct icst307_vco vco); | ||
}; | ||
|
||
int clk_register(struct clk *clk); | ||
void clk_unregister(struct clk *clk); |
Oops, something went wrong.