Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 191769
b: refs/heads/master
c: 178980f
h: refs/heads/master
i:
  191767: 795a394
v: v3
  • Loading branch information
Rabin Vincent authored and Russell King committed May 4, 2010
1 parent fa9a062 commit 0c6b8ab
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 47 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 39a982b4cda1b9c129094a411962348827412d50
refs/heads/master: 178980f98eef58607647eb66e178bf984bf81f4c
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-ux500/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Makefile for the linux kernel, U8500 machine.
#

obj-y := clock.o
obj-y := clock.o cpu.o
obj-$(CONFIG_ARCH_U8500) += cpu-u8500.o
obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o
obj-$(CONFIG_SMP) += platsmp.o headsmp.o localtimer.o
2 changes: 1 addition & 1 deletion trunk/arch/arm/mach-ux500/board-mop500.c
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
.io_pg_offst = (IO_ADDRESS(U8500_UART2_BASE) >> 18) & 0xfffc,
.boot_params = 0x100,
.map_io = u8500_map_io,
.init_irq = u8500_init_irq,
.init_irq = ux500_init_irq,
/* we re-use nomadik timer here */
.timer = &u8500_timer,
.init_machine = u8500_init_machine,
Expand Down
44 changes: 2 additions & 42 deletions trunk/arch/arm/mach-ux500/cpu-u8500.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@
#include <linux/io.h>

#include <asm/localtimer.h>
#include <asm/hardware/gic.h>
#include <asm/mach/map.h>
#include <asm/hardware/cache-l2x0.h>
#include <plat/mtu.h>
#include <mach/hardware.h>
#include <mach/setup.h>
Expand Down Expand Up @@ -103,32 +101,13 @@ static struct platform_device *platform_devs[] __initdata = {
&u8500_gpio_devs[8],
};

#define __IO_DEV_DESC(x, sz) { \
.virtual = IO_ADDRESS(x), \
.pfn = __phys_to_pfn(x), \
.length = sz, \
.type = MT_DEVICE, \
}

/* minimum static i/o mapping required to boot U8500 platforms */
static struct map_desc u8500_io_desc[] __initdata = {
__IO_DEV_DESC(U8500_UART2_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GIC_CPU_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GIC_DIST_BASE, SZ_4K),
__IO_DEV_DESC(U8500_TWD_BASE, SZ_4K),
__IO_DEV_DESC(U8500_SCU_BASE, SZ_4K),
__IO_DEV_DESC(U8500_BACKUPRAM0_BASE, SZ_8K),
__IO_DEV_DESC(U8500_PRCMU_BASE, SZ_4K),
__IO_DEV_DESC(U8500_CLKRST1_BASE, SZ_4K),
__IO_DEV_DESC(U8500_CLKRST2_BASE, SZ_4K),
__IO_DEV_DESC(U8500_CLKRST3_BASE, SZ_4K),
__IO_DEV_DESC(U8500_CLKRST5_BASE, SZ_4K),
__IO_DEV_DESC(U8500_CLKRST6_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO0_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO1_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO2_BASE, SZ_4K),
__IO_DEV_DESC(U8500_GPIO3_BASE, SZ_4K),
__IO_DEV_DESC(U8500_L2CC_BASE, SZ_4K),
};

static struct map_desc u8500ed_io_desc[] __initdata = {
Expand All @@ -142,6 +121,8 @@ static struct map_desc u8500v1_io_desc[] __initdata = {

void __init u8500_map_io(void)
{
ux500_map_io();

iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc));

if (cpu_is_u8500ed())
Expand All @@ -150,12 +131,6 @@ void __init u8500_map_io(void)
iotable_init(u8500v1_io_desc, ARRAY_SIZE(u8500v1_io_desc));
}

void __init u8500_init_irq(void)
{
gic_dist_init(0, __io_address(U8500_GIC_DIST_BASE), 29);
gic_cpu_init(0, __io_address(U8500_GIC_CPU_BASE));
}

/*
* This function is called from the board init
*/
Expand Down Expand Up @@ -185,18 +160,3 @@ static void __init u8500_timer_init(void)
struct sys_timer u8500_timer = {
.init = u8500_timer_init,
};

#ifdef CONFIG_CACHE_L2X0
static int u8500_l2x0_init(void)
{
void __iomem *l2x0_base;

l2x0_base = __io_address(U8500_L2CC_BASE);

/* 64KB way size, 8 way associativity, force WA */
l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);

return 0;
}
early_initcall(u8500_l2x0_init);
#endif
68 changes: 68 additions & 0 deletions trunk/arch/arm/mach-ux500/cpu.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Copyright (C) ST-Ericsson SA 2010
*
* Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
* License terms: GNU General Public License (GPL) version 2
*/

#include <linux/platform_device.h>
#include <linux/amba/bus.h>
#include <linux/io.h>
#include <linux/clk.h>

#include <asm/hardware/cache-l2x0.h>
#include <asm/hardware/gic.h>
#include <asm/mach/map.h>

#include <mach/hardware.h>
#include <mach/setup.h>

#include "clock.h"

static struct map_desc ux500_io_desc[] __initdata = {
__IO_DEV_DESC(UX500_UART0_BASE, SZ_4K),
__IO_DEV_DESC(UX500_UART2_BASE, SZ_4K),

__IO_DEV_DESC(UX500_GIC_CPU_BASE, SZ_4K),
__IO_DEV_DESC(UX500_GIC_DIST_BASE, SZ_4K),
__IO_DEV_DESC(UX500_L2CC_BASE, SZ_4K),
__IO_DEV_DESC(UX500_TWD_BASE, SZ_4K),
__IO_DEV_DESC(UX500_SCU_BASE, SZ_4K),

__IO_DEV_DESC(UX500_CLKRST1_BASE, SZ_4K),
__IO_DEV_DESC(UX500_CLKRST2_BASE, SZ_4K),
__IO_DEV_DESC(UX500_CLKRST3_BASE, SZ_4K),
__IO_DEV_DESC(UX500_CLKRST5_BASE, SZ_4K),
__IO_DEV_DESC(UX500_CLKRST6_BASE, SZ_4K),

__IO_DEV_DESC(UX500_MTU0_BASE, SZ_4K),
__IO_DEV_DESC(UX500_MTU1_BASE, SZ_4K),

__IO_DEV_DESC(UX500_BACKUPRAM0_BASE, SZ_8K),
};

void __init ux500_map_io(void)
{
iotable_init(ux500_io_desc, ARRAY_SIZE(ux500_io_desc));
}

void __init ux500_init_irq(void)
{
gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29);
gic_cpu_init(0, __io_address(UX500_GIC_CPU_BASE));
}

#ifdef CONFIG_CACHE_L2X0
static int ux500_l2x0_init(void)
{
void __iomem *l2x0_base;

l2x0_base = __io_address(UX500_L2CC_BASE);

/* 64KB way size, 8 way associativity, force WA */
l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);

return 0;
}
early_initcall(ux500_l2x0_init);
#endif
13 changes: 11 additions & 2 deletions trunk/arch/arm/mach-ux500/include/mach/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,22 @@
#include <asm/mach/time.h>
#include <linux/init.h>

extern void u8500_map_io(void);
extern void __init ux500_map_io(void);
extern void __init u8500_map_io(void);

extern void u8500_init_devices(void);
extern void u8500_init_irq(void);
extern void __init ux500_init_irq(void);
/* We re-use nomadik_timer for this platform */
extern void nmdk_timer_init(void);

struct sys_timer;
extern struct sys_timer u8500_timer;

#define __IO_DEV_DESC(x, sz) { \
.virtual = IO_ADDRESS(x), \
.pfn = __phys_to_pfn(x), \
.length = sz, \
.type = MT_DEVICE, \
}

#endif /* __ASM_ARCH_SETUP_H */

0 comments on commit 0c6b8ab

Please sign in to comment.