Skip to content

Commit

Permalink
ARM: 6082/1: ux500: put common devices into devices.c
Browse files Browse the repository at this point in the history
Introduce devices.c, for placing devices common among Ux500 SoCs.  Start
with the PL031 device.

Acked-by: Linus Walleij <linus.walleij@stericsson.com>
Acked-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Rabin Vincent authored and Russell King committed May 4, 2010
1 parent d67d112 commit d48fd00
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 15 deletions.
2 changes: 1 addition & 1 deletion 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 cpu.o
obj-y := clock.o cpu.o devices.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
13 changes: 0 additions & 13 deletions arch/arm/mach-ux500/board-mop500.c
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,6 @@ static struct amba_device pl022_device = {
.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) \
static struct resource u8500_i2c_resources_##id[] = { \
[0] = { \
Expand Down Expand Up @@ -188,7 +176,6 @@ static struct amba_device *amba_devs[] __initdata = {
&uart1_device,
&uart2_device,
&pl022_device,
&pl031_device,
};

/* add any platform devices here - TODO */
Expand Down
2 changes: 2 additions & 0 deletions arch/arm/mach-ux500/cpu-u8500.c
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,8 @@ void __init u8500_map_io(void)
*/
void __init u8500_init_devices(void)
{
ux500_init_devices();

/* Register the platform devices */
platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));

Expand Down
10 changes: 10 additions & 0 deletions arch/arm/mach-ux500/cpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

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

#include "clock.h"

Expand All @@ -41,11 +42,20 @@ static struct map_desc ux500_io_desc[] __initdata = {
__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)
{
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)
{
gic_dist_init(0, __io_address(UX500_GIC_DIST_BASE), 29);
Expand Down
37 changes: 37 additions & 0 deletions arch/arm/mach-ux500/devices.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* 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);
}
}
15 changes: 15 additions & 0 deletions arch/arm/mach-ux500/include/mach/devices.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/*
* 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
6 changes: 5 additions & 1 deletion arch/arm/mach-ux500/include/mach/setup.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,15 @@
extern void __init ux500_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);
/* We re-use nomadik_timer for this platform */
extern void nmdk_timer_init(void);

extern void __init amba_add_devices(struct amba_device *devs[], int num);

struct sys_timer;
extern struct sys_timer u8500_timer;

Expand Down

0 comments on commit d48fd00

Please sign in to comment.