diff options
Diffstat (limited to 'kernel/arch/sh/boards/mach-se/7751')
-rw-r--r-- | kernel/arch/sh/boards/mach-se/7751/Makefile | 5 | ||||
-rw-r--r-- | kernel/arch/sh/boards/mach-se/7751/irq.c | 50 | ||||
-rw-r--r-- | kernel/arch/sh/boards/mach-se/7751/setup.c | 59 |
3 files changed, 114 insertions, 0 deletions
diff --git a/kernel/arch/sh/boards/mach-se/7751/Makefile b/kernel/arch/sh/boards/mach-se/7751/Makefile new file mode 100644 index 000000000..a338fd9d5 --- /dev/null +++ b/kernel/arch/sh/boards/mach-se/7751/Makefile @@ -0,0 +1,5 @@ +# +# Makefile for the 7751 SolutionEngine specific parts of the kernel +# + +obj-y := setup.o irq.o diff --git a/kernel/arch/sh/boards/mach-se/7751/irq.c b/kernel/arch/sh/boards/mach-se/7751/irq.c new file mode 100644 index 000000000..5c9847ea1 --- /dev/null +++ b/kernel/arch/sh/boards/mach-se/7751/irq.c @@ -0,0 +1,50 @@ +/* + * linux/arch/sh/boards/se/7751/irq.c + * + * Copyright (C) 2000 Kazumoto Kojima + * + * Hitachi SolutionEngine Support. + * + * Modified for 7751 Solution Engine by + * Ian da Silva and Jeremy Siegel, 2001. + */ + +#include <linux/init.h> +#include <linux/irq.h> +#include <asm/irq.h> +#include <mach-se/mach/se7751.h> + +static struct ipr_data ipr_irq_table[] = { + { 13, 3, 3, 2 }, + /* Add additional entries here as drivers are added and tested. */ +}; + +static unsigned long ipr_offsets[] = { + BCR_ILCRA, + BCR_ILCRB, + BCR_ILCRC, + BCR_ILCRD, + BCR_ILCRE, + BCR_ILCRF, + BCR_ILCRG, +}; + +static struct ipr_desc ipr_irq_desc = { + .ipr_offsets = ipr_offsets, + .nr_offsets = ARRAY_SIZE(ipr_offsets), + + .ipr_data = ipr_irq_table, + .nr_irqs = ARRAY_SIZE(ipr_irq_table), + + .chip = { + .name = "IPR-se7751", + }, +}; + +/* + * Initialize IRQ setting + */ +void __init init_7751se_IRQ(void) +{ + register_ipr_controller(&ipr_irq_desc); +} diff --git a/kernel/arch/sh/boards/mach-se/7751/setup.c b/kernel/arch/sh/boards/mach-se/7751/setup.c new file mode 100644 index 000000000..820f4e7ba --- /dev/null +++ b/kernel/arch/sh/boards/mach-se/7751/setup.c @@ -0,0 +1,59 @@ +/* + * linux/arch/sh/boards/se/7751/setup.c + * + * Copyright (C) 2000 Kazumoto Kojima + * + * Hitachi SolutionEngine Support. + * + * Modified for 7751 Solution Engine by + * Ian da Silva and Jeremy Siegel, 2001. + */ +#include <linux/init.h> +#include <linux/platform_device.h> +#include <asm/machvec.h> +#include <mach-se/mach/se7751.h> +#include <asm/io.h> +#include <asm/heartbeat.h> + +static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; + +static struct heartbeat_data heartbeat_data = { + .bit_pos = heartbeat_bit_pos, + .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), +}; + +static struct resource heartbeat_resources[] = { + [0] = { + .start = PA_LED, + .end = PA_LED, + .flags = IORESOURCE_MEM, + }, +}; + +static struct platform_device heartbeat_device = { + .name = "heartbeat", + .id = -1, + .dev = { + .platform_data = &heartbeat_data, + }, + .num_resources = ARRAY_SIZE(heartbeat_resources), + .resource = heartbeat_resources, +}; + +static struct platform_device *se7751_devices[] __initdata = { + &heartbeat_device, +}; + +static int __init se7751_devices_setup(void) +{ + return platform_add_devices(se7751_devices, ARRAY_SIZE(se7751_devices)); +} +device_initcall(se7751_devices_setup); + +/* + * The Machine Vector + */ +static struct sh_machine_vector mv_7751se __initmv = { + .mv_name = "7751 SolutionEngine", + .mv_init_irq = init_7751se_IRQ, +}; |