aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/mti-malta
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/mti-malta')
-rw-r--r--arch/mips/mti-malta/Makefile5
-rw-r--r--arch/mips/mti-malta/malta-mtd.c63
-rw-r--r--arch/mips/mti-malta/malta-platform.c107
3 files changed, 97 insertions, 78 deletions
diff --git a/arch/mips/mti-malta/Makefile b/arch/mips/mti-malta/Makefile
index cef2db8d2225..32e847808df1 100644
--- a/arch/mips/mti-malta/Makefile
+++ b/arch/mips/mti-malta/Makefile
@@ -7,9 +7,8 @@
7# 7#
8obj-y := malta-amon.o malta-cmdline.o \ 8obj-y := malta-amon.o malta-cmdline.o \
9 malta-display.o malta-init.o malta-int.o \ 9 malta-display.o malta-init.o malta-int.o \
10 malta-memory.o malta-mtd.o \ 10 malta-memory.o malta-platform.o \
11 malta-platform.o malta-reset.o \ 11 malta-reset.o malta-setup.o malta-time.o
12 malta-setup.o malta-time.o
13 12
14obj-$(CONFIG_EARLY_PRINTK) += malta-console.o 13obj-$(CONFIG_EARLY_PRINTK) += malta-console.o
15obj-$(CONFIG_PCI) += malta-pci.o 14obj-$(CONFIG_PCI) += malta-pci.o
diff --git a/arch/mips/mti-malta/malta-mtd.c b/arch/mips/mti-malta/malta-mtd.c
deleted file mode 100644
index 8ad9bdf25dce..000000000000
--- a/arch/mips/mti-malta/malta-mtd.c
+++ /dev/null
@@ -1,63 +0,0 @@
1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Copyright (C) 2006 MIPS Technologies, Inc.
7 * written by Ralf Baechle <ralf@linux-mips.org>
8 */
9
10#include <linux/init.h>
11#include <linux/platform_device.h>
12#include <linux/mtd/partitions.h>
13#include <linux/mtd/physmap.h>
14#include <mtd/mtd-abi.h>
15
16static struct mtd_partition malta_mtd_partitions[] = {
17 {
18 .name = "YAMON",
19 .offset = 0x0,
20 .size = 0x100000,
21 .mask_flags = MTD_WRITEABLE
22 }, {
23 .name = "User FS",
24 .offset = 0x100000,
25 .size = 0x2e0000
26 }, {
27 .name = "Board Config",
28 .offset = 0x3e0000,
29 .size = 0x020000,
30 .mask_flags = MTD_WRITEABLE
31 }
32};
33
34static struct physmap_flash_data malta_flash_data = {
35 .width = 4,
36 .nr_parts = ARRAY_SIZE(malta_mtd_partitions),
37 .parts = malta_mtd_partitions
38};
39
40static struct resource malta_flash_resource = {
41 .start = 0x1e000000,
42 .end = 0x1e3fffff,
43 .flags = IORESOURCE_MEM
44};
45
46static struct platform_device malta_flash = {
47 .name = "physmap-flash",
48 .id = 0,
49 .dev = {
50 .platform_data = &malta_flash_data,
51 },
52 .num_resources = 1,
53 .resource = &malta_flash_resource,
54};
55
56static int __init malta_mtd_init(void)
57{
58 platform_device_register(&malta_flash);
59
60 return 0;
61}
62
63module_init(malta_mtd_init)
diff --git a/arch/mips/mti-malta/malta-platform.c b/arch/mips/mti-malta/malta-platform.c
index 83b9bab3cd3f..72e32a7715be 100644
--- a/arch/mips/mti-malta/malta-platform.c
+++ b/arch/mips/mti-malta/malta-platform.c
@@ -3,10 +3,14 @@
3 * License. See the file "COPYING" in the main directory of this archive 3 * License. See the file "COPYING" in the main directory of this archive
4 * for more details. 4 * for more details.
5 * 5 *
6 * Copyright (C) 2007 MIPS Technologies, Inc. 6 * Copyright (C) 2006, 07 MIPS Technologies, Inc.
7 * written by Ralf Baechle (ralf@linux-mips.org) 7 * written by Ralf Baechle (ralf@linux-mips.org)
8 * written by Ralf Baechle <ralf@linux-mips.org>
8 * 9 *
9 * Probe driver for the Malta's UART ports: 10 * Copyright (C) 2008 Wind River Systems, Inc.
11 * updated by Tiejun Chen <tiejun.chen@windriver.com>
12 *
13 * 1. Probe driver for the Malta's UART ports:
10 * 14 *
11 * o 2 ports in the SMC SuperIO 15 * o 2 ports in the SMC SuperIO
12 * o 1 port in the CBUS UART, a discrete 16550 which normally is only used 16 * o 1 port in the CBUS UART, a discrete 16550 which normally is only used
@@ -14,10 +18,17 @@
14 * 18 *
15 * We don't use 8250_platform.c on Malta as it would result in the CBUS 19 * We don't use 8250_platform.c on Malta as it would result in the CBUS
16 * UART becoming ttyS0. 20 * UART becoming ttyS0.
21 *
22 * 2. Register RTC-CMOS platform device on Malta.
17 */ 23 */
18#include <linux/module.h>
19#include <linux/init.h> 24#include <linux/init.h>
20#include <linux/serial_8250.h> 25#include <linux/serial_8250.h>
26#include <linux/mc146818rtc.h>
27#include <linux/module.h>
28#include <linux/mtd/partitions.h>
29#include <linux/mtd/physmap.h>
30#include <linux/platform_device.h>
31#include <mtd/mtd-abi.h>
21 32
22#define SMC_PORT(base, int) \ 33#define SMC_PORT(base, int) \
23{ \ 34{ \
@@ -45,21 +56,93 @@ static struct plat_serial8250_port uart8250_data[] = {
45 { }, 56 { },
46}; 57};
47 58
48static struct platform_device uart8250_device = { 59static struct platform_device malta_uart8250_device = {
49 .name = "serial8250", 60 .name = "serial8250",
50 .id = PLAT8250_DEV_PLATFORM2, 61 .id = PLAT8250_DEV_PLATFORM,
51 .dev = { 62 .dev = {
52 .platform_data = uart8250_data, 63 .platform_data = uart8250_data,
53 }, 64 },
54}; 65};
55 66
56static int __init uart8250_init(void) 67struct resource malta_rtc_resources[] = {
68 {
69 .start = RTC_PORT(0),
70 .end = RTC_PORT(7),
71 .flags = IORESOURCE_IO,
72 }, {
73 .start = RTC_IRQ,
74 .end = RTC_IRQ,
75 .flags = IORESOURCE_IRQ,
76 }
77};
78
79static struct platform_device malta_rtc_device = {
80 .name = "rtc_cmos",
81 .id = -1,
82 .resource = malta_rtc_resources,
83 .num_resources = ARRAY_SIZE(malta_rtc_resources),
84};
85
86static struct mtd_partition malta_mtd_partitions[] = {
87 {
88 .name = "YAMON",
89 .offset = 0x0,
90 .size = 0x100000,
91 .mask_flags = MTD_WRITEABLE
92 }, {
93 .name = "User FS",
94 .offset = 0x100000,
95 .size = 0x2e0000
96 }, {
97 .name = "Board Config",
98 .offset = 0x3e0000,
99 .size = 0x020000,
100 .mask_flags = MTD_WRITEABLE
101 }
102};
103
104static struct physmap_flash_data malta_flash_data = {
105 .width = 4,
106 .nr_parts = ARRAY_SIZE(malta_mtd_partitions),
107 .parts = malta_mtd_partitions
108};
109
110static struct resource malta_flash_resource = {
111 .start = 0x1e000000,
112 .end = 0x1e3fffff,
113 .flags = IORESOURCE_MEM
114};
115
116static struct platform_device malta_flash_device = {
117 .name = "physmap-flash",
118 .id = 0,
119 .dev = {
120 .platform_data = &malta_flash_data,
121 },
122 .num_resources = 1,
123 .resource = &malta_flash_resource,
124};
125
126static struct platform_device *malta_devices[] __initdata = {
127 &malta_uart8250_device,
128 &malta_rtc_device,
129 &malta_flash_device,
130};
131
132static int __init malta_add_devices(void)
57{ 133{
58 return platform_device_register(&uart8250_device); 134 int err;
59}
60 135
61module_init(uart8250_init); 136 err = platform_add_devices(malta_devices, ARRAY_SIZE(malta_devices));
137 if (err)
138 return err;
139
140 /*
141 * Set RTC to BCD mode to support current alarm code.
142 */
143 CMOS_WRITE(CMOS_READ(RTC_CONTROL) & ~RTC_DM_BINARY, RTC_CONTROL);
144
145 return 0;
146}
62 147
63MODULE_AUTHOR("Ralf Baechle <ralf@linux-mips.org>"); 148device_initcall(malta_add_devices);
64MODULE_LICENSE("GPL");
65MODULE_DESCRIPTION("8250 UART probe driver for the Malta CBUS UART");