提交 d48fd006 编写于 作者: R Rabin Vincent 提交者: Russell King

ARM: 6082/1: ux500: put common devices into devices.c

Introduce devices.c, for placing devices common among Ux500 SoCs.  Start
with the PL031 device.
Acked-by: NLinus Walleij <linus.walleij@stericsson.com>
Acked-by: NSrinidhi Kasagar <srinidhi.kasagar@stericsson.com>
Signed-off-by: NRabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
上级 d67d1127
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Makefile for the linux kernel, U8500 machine. # Makefile for the linux kernel, U8500 machine.
# #
obj-y := clock.o cpu.o obj-y := clock.o cpu.o devices.o
obj-$(CONFIG_ARCH_U8500) += cpu-u8500.o obj-$(CONFIG_ARCH_U8500) += cpu-u8500.o
obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o obj-$(CONFIG_MACH_U8500_MOP) += board-mop500.o
obj-$(CONFIG_SMP) += platsmp.o headsmp.o localtimer.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o localtimer.o
...@@ -107,18 +107,6 @@ static struct amba_device pl022_device = { ...@@ -107,18 +107,6 @@ static struct amba_device pl022_device = {
.periphid = SSP_PER_ID, .periphid = SSP_PER_ID,
}; };
static struct amba_device pl031_device = {
.dev = {
.init_name = "pl031",
},
.res = {
.start = U8500_RTC_BASE,
.end = U8500_RTC_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
.irq = {IRQ_RTC_RTT, NO_IRQ},
};
#define U8500_I2C_RESOURCES(id, size) \ #define U8500_I2C_RESOURCES(id, size) \
static struct resource u8500_i2c_resources_##id[] = { \ static struct resource u8500_i2c_resources_##id[] = { \
[0] = { \ [0] = { \
...@@ -188,7 +176,6 @@ static struct amba_device *amba_devs[] __initdata = { ...@@ -188,7 +176,6 @@ static struct amba_device *amba_devs[] __initdata = {
&uart1_device, &uart1_device,
&uart2_device, &uart2_device,
&pl022_device, &pl022_device,
&pl031_device,
}; };
/* add any platform devices here - TODO */ /* add any platform devices here - TODO */
......
...@@ -106,6 +106,8 @@ void __init u8500_map_io(void) ...@@ -106,6 +106,8 @@ void __init u8500_map_io(void)
*/ */
void __init u8500_init_devices(void) void __init u8500_init_devices(void)
{ {
ux500_init_devices();
/* Register the platform devices */ /* Register the platform devices */
platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs)); platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/setup.h> #include <mach/setup.h>
#include <mach/devices.h>
#include "clock.h" #include "clock.h"
...@@ -41,11 +42,20 @@ static struct map_desc ux500_io_desc[] __initdata = { ...@@ -41,11 +42,20 @@ static struct map_desc ux500_io_desc[] __initdata = {
__IO_DEV_DESC(UX500_BACKUPRAM0_BASE, SZ_8K), __IO_DEV_DESC(UX500_BACKUPRAM0_BASE, SZ_8K),
}; };
static struct amba_device *ux500_amba_devs[] __initdata = {
&ux500_pl031_device,
};
void __init ux500_map_io(void) void __init ux500_map_io(void)
{ {
iotable_init(ux500_io_desc, ARRAY_SIZE(ux500_io_desc)); iotable_init(ux500_io_desc, ARRAY_SIZE(ux500_io_desc));
} }
void __init ux500_init_devices(void)
{
amba_add_devices(ux500_amba_devs, ARRAY_SIZE(ux500_amba_devs));
}
void __init ux500_init_irq(void) void __init ux500_init_irq(void)
{ {
gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29); gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29);
......
/*
* 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/kernel.h>
#include <linux/platform_device.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/amba/bus.h>
#include <mach/hardware.h>
#include <mach/setup.h>
struct amba_device ux500_pl031_device = {
.dev = {
.init_name = "pl031",
},
.res = {
.start = UX500_RTC_BASE,
.end = UX500_RTC_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
.irq = {IRQ_RTC_RTT, NO_IRQ},
};
void __init amba_add_devices(struct amba_device *devs[], int num)
{
int i;
for (i = 0; i < num; i++) {
struct amba_device *d = devs[i];
amba_device_register(d, &iomem_resource);
}
}
/*
* Copyright (C) ST-Ericsson SA 2010
*
* License terms: GNU General Public License (GPL) version 2
*/
#ifndef __ASM_ARCH_DEVICES_H__
#define __ASM_ARCH_DEVICES_H__
struct platform_device;
struct amba_device;
extern struct amba_device ux500_pl031_device;
#endif
...@@ -17,11 +17,15 @@ ...@@ -17,11 +17,15 @@
extern void __init ux500_map_io(void); extern void __init ux500_map_io(void);
extern void __init u8500_map_io(void); extern void __init u8500_map_io(void);
extern void u8500_init_devices(void); extern void __init ux500_init_devices(void);
extern void __init u8500_init_devices(void);
extern void __init ux500_init_irq(void); extern void __init ux500_init_irq(void);
/* We re-use nomadik_timer for this platform */ /* We re-use nomadik_timer for this platform */
extern void nmdk_timer_init(void); extern void nmdk_timer_init(void);
extern void __init amba_add_devices(struct amba_device *devs[], int num);
struct sys_timer; struct sys_timer;
extern struct sys_timer u8500_timer; extern struct sys_timer u8500_timer;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册