Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 323cdfc1 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[MFD] Add SA11x0 MCP platform device support



Add platform device data for the SA11x0 MCP device.  This allows
platforms to customise the configuration of the SA11x0 MCP device
according to their needs.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5e742ad6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/arch/assabet.h>
#include <asm/arch/mcp.h>

#include "generic.h"

@@ -198,6 +199,11 @@ static struct irda_platform_data assabet_irda_data = {
	.set_speed	= assabet_irda_set_speed,
};

static struct mcp_plat_data assabet_mcp_data = {
	.mccr0		= MCCR0_ADM,
	.sclk_rate	= 11981000,
};

static void __init assabet_init(void)
{
	/*
@@ -246,6 +252,7 @@ static void __init assabet_init(void)
	sa11x0_set_flash_data(&assabet_flash_data, assabet_flash_resources,
			      ARRAY_SIZE(assabet_flash_resources));
	sa11x0_set_irda_data(&assabet_irda_data);
	sa11x0_set_mcp_data(&assabet_mcp_data);
}

/*
+7 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <asm/mach/serial_sa1100.h>

#include <asm/arch/cerf.h>
#include <asm/arch/mcp.h>
#include "generic.h"

static struct resource cerfuart2_resources[] = {
@@ -116,10 +117,16 @@ static void __init cerf_map_io(void)
	GPDR |= CERF_GPIO_CF_RESET;
}

static struct mcp_plat_data cerf_mcp_data = {
	.mccr0		= MCCR0_ADM,
	.sclk_rate	= 11981000,
};

static void __init cerf_init(void)
{
	platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));
	sa11x0_set_flash_data(&cerf_flash_data, &cerf_flash_resource, 1);
	sa11x0_set_mcp_data(&cerf_mcp_data);
}

MACHINE_START(CERF, "Intrinsyc CerfBoard/CerfCube")
+5 −0
Original line number Diff line number Diff line
@@ -221,6 +221,11 @@ static struct platform_device sa11x0mcp_device = {
	.resource	= sa11x0mcp_resources,
};

void sa11x0_set_mcp_data(struct mcp_plat_data *data)
{
	sa11x0mcp_device.dev.platform_data = data;
}

static struct resource sa11x0ssp_resources[] = {
	[0] = {
		.start	= 0x80070000,
+3 −0
Original line number Diff line number Diff line
@@ -34,5 +34,8 @@ struct resource;
extern void sa11x0_set_flash_data(struct flash_platform_data *flash,
				  struct resource *res, int nr);

struct sa11x0_ssp_plat_ops;
extern void sa11x0_set_ssp_data(struct sa11x0_ssp_plat_ops *ops);

struct irda_platform_data;
void sa11x0_set_irda_data(struct irda_platform_data *irda);
+12 −0
Original line number Diff line number Diff line
@@ -13,12 +13,23 @@
#include <asm/mach/arch.h>
#include <asm/mach/map.h>
#include <asm/mach/serial_sa1100.h>
#include <asm/arch/mcp.h>

#include "generic.h"


#warning "include/asm/arch-sa1100/ide.h needs fixing for lart"

static struct mcp_plat_data lart_mcp_data = {
	.mccr0		= MCCR0_ADM,
	.sclk_rate	= 11981000,
};

static void __init lart_init(void)
{
	sa11x0_set_mcp_data(&lart_mcp_data);
}

static struct map_desc lart_io_desc[] __initdata = {
 /* virtual     physical    length      type */
  { 0xe8000000, 0x00000000, 0x00400000, MT_DEVICE }, /* main flash memory */
@@ -47,5 +58,6 @@ MACHINE_START(LART, "LART")
	.boot_params	= 0xc0000100,
	.map_io		= lart_map_io,
	.init_irq	= sa1100_init_irq,
	.init_machine	= lart_init,
	.timer		= &sa1100_timer,
MACHINE_END
Loading