[mipsel] Add a loongson-2f flavour
[mipsel] Loongson: Define rtc device on MC146818-equipped systems svn path=/dists/trunk/linux-2.6/; revision=15828
This commit is contained in:
parent
b781c01f02
commit
ac3139558e
|
@ -7,6 +7,8 @@ linux-2.6 (2.6.34-1~experimental.2) UNRELEASED; urgency=low
|
||||||
* writeback: ensure that WB_SYNC_NONE writeback with sb pinned is sync
|
* writeback: ensure that WB_SYNC_NONE writeback with sb pinned is sync
|
||||||
(Closes: #582808)
|
(Closes: #582808)
|
||||||
* writeback: fix non-integrity write-back
|
* writeback: fix non-integrity write-back
|
||||||
|
* [mipsel] Add a loongson-2f flavour
|
||||||
|
* [mipsel] Loongson: Define rtc device on MC146818-equipped systems
|
||||||
|
|
||||||
[ maximilian attems ]
|
[ maximilian attems ]
|
||||||
* topconfig enable CFQ_GROUP_IOSCHED, MFD_WM8994, REGULATOR_MAX8649,
|
* topconfig enable CFQ_GROUP_IOSCHED, MFD_WM8994, REGULATOR_MAX8649,
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
##
|
||||||
|
## file: arch/mips/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_MACH_LOONGSON=y
|
||||||
|
# CONFIG_32BIT is not set
|
||||||
|
CONFIG_64BIT=y
|
||||||
|
CONFIG_PCI=y
|
||||||
|
CONFIG_MIPS32_COMPAT=y
|
||||||
|
CONFIG_MIPS32_O32=y
|
||||||
|
CONFIG_MIPS32_N32=y
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: arch/mips/loongson/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_LEMOTE_MACH2F=y
|
||||||
|
CONFIG_CS5536_MFGPT=y
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: arch/mips/kernel/cpufreq/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_LOONGSON2_CPUFREQ=m
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/ata/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_ATA=y
|
||||||
|
CONFIG_ATA_VERBOSE_ERROR=y
|
||||||
|
CONFIG_PATA_AMD=y
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/char/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_VT=y
|
||||||
|
CONFIG_VT_CONSOLE=y
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/cpufreq/Kconfig
|
||||||
|
##
|
||||||
|
## choice: Default CPUFreq governor
|
||||||
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
|
||||||
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
|
||||||
|
CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
||||||
|
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
|
||||||
|
## end choice
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/serial/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_SERIAL_8250=y
|
||||||
|
CONFIG_SERIAL_8250_CONSOLE=y
|
||||||
|
# CONFIG_SERIAL_8250_EXTENDED is not set
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/video/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_VIDEO_OUTPUT_CONTROL=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_FB_SIS=y
|
||||||
|
CONFIG_FB_SIS_300=y
|
||||||
|
CONFIG_FB_SIS_315=y
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/video/backlight/Kconfig
|
||||||
|
##
|
||||||
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
|
CONFIG_LCD_PLATFORM=y
|
||||||
|
CONFIG_BACKLIGHT_GENERIC=m
|
||||||
|
|
||||||
|
##
|
||||||
|
## file: drivers/video/console/Kconfig
|
||||||
|
##
|
||||||
|
# CONFIG_VGA_CONSOLE is not set
|
||||||
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
@ -5,6 +5,7 @@ flavours:
|
||||||
sb1a-bcm91480b
|
sb1a-bcm91480b
|
||||||
4kc-malta
|
4kc-malta
|
||||||
5kc-malta
|
5kc-malta
|
||||||
|
loongson-2f
|
||||||
kernel-arch: mips
|
kernel-arch: mips
|
||||||
|
|
||||||
[image]
|
[image]
|
||||||
|
@ -41,3 +42,7 @@ hardware-long: MIPS Malta boards (64-bit)
|
||||||
|
|
||||||
[5kc-malta_image]
|
[5kc-malta_image]
|
||||||
configs: mips/config.5kc-malta
|
configs: mips/config.5kc-malta
|
||||||
|
|
||||||
|
[loongson-2f_description]
|
||||||
|
hardware: Loongson 2F
|
||||||
|
hardware-long: Lemote Loongson 2F systems
|
||||||
|
|
|
@ -0,0 +1,163 @@
|
||||||
|
From: Arnaud Patard <apatard@mandriva.com>
|
||||||
|
Date: Thu, 29 Apr 2010 11:58:44 +0200
|
||||||
|
Subject: [PATCH] RTC: rtc-cmos: Fix binary mode support
|
||||||
|
|
||||||
|
commit 3804a89bfb84fb8849c72e3bbafddaee539b3430 upstream.
|
||||||
|
|
||||||
|
As a follow-up to the thread about RTC support for some Loongson 2E/2F
|
||||||
|
boards, this patch tries to address the "REVISIT"/"FIXME" comments about
|
||||||
|
rtc binary mode handling and allow rtc to work with rtc in binary mode.
|
||||||
|
I've also raised the message about 24-h mode not supported to warning
|
||||||
|
otherwise, one may end up with no rtc without any message in the kernel
|
||||||
|
log.
|
||||||
|
|
||||||
|
Signed-off-by: Arnaud Patard <apatard@mandriva.com>
|
||||||
|
To: linux-mips@linux-mips.org
|
||||||
|
To: rtc-linux@googlegroups.com
|
||||||
|
Cc: david-b@pacbell.net
|
||||||
|
Cc: a.zummo@towertech.it
|
||||||
|
Cc: akpm@linux-foundation.org
|
||||||
|
Patchwork: http://patchwork.linux-mips.org/patch/1158/
|
||||||
|
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||||
|
---
|
||||||
|
drivers/rtc/rtc-cmos.c | 83 +++++++++++++++++++++++-------------------------
|
||||||
|
1 files changed, 40 insertions(+), 43 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
|
||||||
|
index ece4dbd..96e8e70 100644
|
||||||
|
--- a/drivers/rtc/rtc-cmos.c
|
||||||
|
+++ b/drivers/rtc/rtc-cmos.c
|
||||||
|
@@ -238,31 +238,32 @@ static int cmos_read_alarm(struct device *dev, struct rtc_wkalrm *t)
|
||||||
|
rtc_control = CMOS_READ(RTC_CONTROL);
|
||||||
|
spin_unlock_irq(&rtc_lock);
|
||||||
|
|
||||||
|
- /* REVISIT this assumes PC style usage: always BCD */
|
||||||
|
-
|
||||||
|
- if (((unsigned)t->time.tm_sec) < 0x60)
|
||||||
|
- t->time.tm_sec = bcd2bin(t->time.tm_sec);
|
||||||
|
- else
|
||||||
|
- t->time.tm_sec = -1;
|
||||||
|
- if (((unsigned)t->time.tm_min) < 0x60)
|
||||||
|
- t->time.tm_min = bcd2bin(t->time.tm_min);
|
||||||
|
- else
|
||||||
|
- t->time.tm_min = -1;
|
||||||
|
- if (((unsigned)t->time.tm_hour) < 0x24)
|
||||||
|
- t->time.tm_hour = bcd2bin(t->time.tm_hour);
|
||||||
|
- else
|
||||||
|
- t->time.tm_hour = -1;
|
||||||
|
-
|
||||||
|
- if (cmos->day_alrm) {
|
||||||
|
- if (((unsigned)t->time.tm_mday) <= 0x31)
|
||||||
|
- t->time.tm_mday = bcd2bin(t->time.tm_mday);
|
||||||
|
+ if (!(rtc_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) {
|
||||||
|
+ if (((unsigned)t->time.tm_sec) < 0x60)
|
||||||
|
+ t->time.tm_sec = bcd2bin(t->time.tm_sec);
|
||||||
|
else
|
||||||
|
- t->time.tm_mday = -1;
|
||||||
|
- if (cmos->mon_alrm) {
|
||||||
|
- if (((unsigned)t->time.tm_mon) <= 0x12)
|
||||||
|
- t->time.tm_mon = bcd2bin(t->time.tm_mon) - 1;
|
||||||
|
+ t->time.tm_sec = -1;
|
||||||
|
+ if (((unsigned)t->time.tm_min) < 0x60)
|
||||||
|
+ t->time.tm_min = bcd2bin(t->time.tm_min);
|
||||||
|
+ else
|
||||||
|
+ t->time.tm_min = -1;
|
||||||
|
+ if (((unsigned)t->time.tm_hour) < 0x24)
|
||||||
|
+ t->time.tm_hour = bcd2bin(t->time.tm_hour);
|
||||||
|
+ else
|
||||||
|
+ t->time.tm_hour = -1;
|
||||||
|
+
|
||||||
|
+ if (cmos->day_alrm) {
|
||||||
|
+ if (((unsigned)t->time.tm_mday) <= 0x31)
|
||||||
|
+ t->time.tm_mday = bcd2bin(t->time.tm_mday);
|
||||||
|
else
|
||||||
|
- t->time.tm_mon = -1;
|
||||||
|
+ t->time.tm_mday = -1;
|
||||||
|
+
|
||||||
|
+ if (cmos->mon_alrm) {
|
||||||
|
+ if (((unsigned)t->time.tm_mon) <= 0x12)
|
||||||
|
+ t->time.tm_mon = bcd2bin(t->time.tm_mon)-1;
|
||||||
|
+ else
|
||||||
|
+ t->time.tm_mon = -1;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
t->time.tm_year = -1;
|
||||||
|
@@ -322,29 +323,26 @@ static void cmos_irq_disable(struct cmos_rtc *cmos, unsigned char mask)
|
||||||
|
static int cmos_set_alarm(struct device *dev, struct rtc_wkalrm *t)
|
||||||
|
{
|
||||||
|
struct cmos_rtc *cmos = dev_get_drvdata(dev);
|
||||||
|
- unsigned char mon, mday, hrs, min, sec;
|
||||||
|
+ unsigned char mon, mday, hrs, min, sec, rtc_control;
|
||||||
|
|
||||||
|
if (!is_valid_irq(cmos->irq))
|
||||||
|
return -EIO;
|
||||||
|
|
||||||
|
- /* REVISIT this assumes PC style usage: always BCD */
|
||||||
|
-
|
||||||
|
- /* Writing 0xff means "don't care" or "match all". */
|
||||||
|
-
|
||||||
|
mon = t->time.tm_mon + 1;
|
||||||
|
- mon = (mon <= 12) ? bin2bcd(mon) : 0xff;
|
||||||
|
-
|
||||||
|
mday = t->time.tm_mday;
|
||||||
|
- mday = (mday >= 1 && mday <= 31) ? bin2bcd(mday) : 0xff;
|
||||||
|
-
|
||||||
|
hrs = t->time.tm_hour;
|
||||||
|
- hrs = (hrs < 24) ? bin2bcd(hrs) : 0xff;
|
||||||
|
-
|
||||||
|
min = t->time.tm_min;
|
||||||
|
- min = (min < 60) ? bin2bcd(min) : 0xff;
|
||||||
|
-
|
||||||
|
sec = t->time.tm_sec;
|
||||||
|
- sec = (sec < 60) ? bin2bcd(sec) : 0xff;
|
||||||
|
+
|
||||||
|
+ rtc_control = CMOS_READ(RTC_CONTROL);
|
||||||
|
+ if (!(rtc_control & RTC_DM_BINARY) || RTC_ALWAYS_BCD) {
|
||||||
|
+ /* Writing 0xff means "don't care" or "match all". */
|
||||||
|
+ mon = (mon <= 12) ? bin2bcd(mon) : 0xff;
|
||||||
|
+ mday = (mday >= 1 && mday <= 31) ? bin2bcd(mday) : 0xff;
|
||||||
|
+ hrs = (hrs < 24) ? bin2bcd(hrs) : 0xff;
|
||||||
|
+ min = (min < 60) ? bin2bcd(min) : 0xff;
|
||||||
|
+ sec = (sec < 60) ? bin2bcd(sec) : 0xff;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
spin_lock_irq(&rtc_lock);
|
||||||
|
|
||||||
|
@@ -478,7 +476,7 @@ static int cmos_procfs(struct device *dev, struct seq_file *seq)
|
||||||
|
"update_IRQ\t: %s\n"
|
||||||
|
"HPET_emulated\t: %s\n"
|
||||||
|
// "square_wave\t: %s\n"
|
||||||
|
- // "BCD\t\t: %s\n"
|
||||||
|
+ "BCD\t\t: %s\n"
|
||||||
|
"DST_enable\t: %s\n"
|
||||||
|
"periodic_freq\t: %d\n"
|
||||||
|
"batt_status\t: %s\n",
|
||||||
|
@@ -486,7 +484,7 @@ static int cmos_procfs(struct device *dev, struct seq_file *seq)
|
||||||
|
(rtc_control & RTC_UIE) ? "yes" : "no",
|
||||||
|
is_hpet_enabled() ? "yes" : "no",
|
||||||
|
// (rtc_control & RTC_SQWE) ? "yes" : "no",
|
||||||
|
- // (rtc_control & RTC_DM_BINARY) ? "no" : "yes",
|
||||||
|
+ (rtc_control & RTC_DM_BINARY) ? "no" : "yes",
|
||||||
|
(rtc_control & RTC_DST_EN) ? "yes" : "no",
|
||||||
|
cmos->rtc->irq_freq,
|
||||||
|
(valid & RTC_VRT) ? "okay" : "dead");
|
||||||
|
@@ -751,12 +749,11 @@ cmos_do_probe(struct device *dev, struct resource *ports, int rtc_irq)
|
||||||
|
|
||||||
|
spin_unlock_irq(&rtc_lock);
|
||||||
|
|
||||||
|
- /* FIXME teach the alarm code how to handle binary mode;
|
||||||
|
+ /* FIXME:
|
||||||
|
* <asm-generic/rtc.h> doesn't know 12-hour mode either.
|
||||||
|
*/
|
||||||
|
- if (is_valid_irq(rtc_irq) &&
|
||||||
|
- (!(rtc_control & RTC_24H) || (rtc_control & (RTC_DM_BINARY)))) {
|
||||||
|
- dev_dbg(dev, "only 24-hr BCD mode supported\n");
|
||||||
|
+ if (is_valid_irq(rtc_irq) && !(rtc_control & RTC_24H)) {
|
||||||
|
+ dev_warn(dev, "only 24-hr supported\n");
|
||||||
|
retval = -ENXIO;
|
||||||
|
goto cleanup1;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.7.1
|
||||||
|
|
114
debian/patches/features/mips/MIPS-Loongson-Define-rtc-device-on-MC146818-systems.patch
vendored
Normal file
114
debian/patches/features/mips/MIPS-Loongson-Define-rtc-device-on-MC146818-systems.patch
vendored
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
From: apatard@mandriva.com <apatard@mandriva.com>
|
||||||
|
Date: Wed, 2 Jun 2010 00:39:54 +0200
|
||||||
|
Subject: [PATCH] MIPS: Loongson: Define rtc device on MC146818-equipped systems
|
||||||
|
|
||||||
|
commit b224e7061338eb0a12793c456d008fd65560e002 upstream.
|
||||||
|
|
||||||
|
This patch declare the rtc device present on systems with clock compatible
|
||||||
|
with the mc146818 and handled by rtc-cmos. Introduce a new Kconfig entry
|
||||||
|
because there are some systems without rtc_cmos compatible clock.
|
||||||
|
|
||||||
|
Signed-off-by: Arnaud Patard <apatard@mandriva.com>
|
||||||
|
To: linux-mips@linux-mips.org
|
||||||
|
Cc: aba@not.so.argh.org
|
||||||
|
Patchwork: http://patchwork.linux-mips.org/patch/1320/
|
||||||
|
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
|
||||||
|
---
|
||||||
|
arch/mips/loongson/Kconfig | 6 +++++
|
||||||
|
arch/mips/loongson/common/Makefile | 1 +
|
||||||
|
arch/mips/loongson/common/rtc.c | 43 ++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 50 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 arch/mips/loongson/common/rtc.c
|
||||||
|
|
||||||
|
diff --git a/arch/mips/loongson/Kconfig b/arch/mips/loongson/Kconfig
|
||||||
|
index 3df1967..c97ca69 100644
|
||||||
|
--- a/arch/mips/loongson/Kconfig
|
||||||
|
+++ b/arch/mips/loongson/Kconfig
|
||||||
|
@@ -23,6 +23,7 @@ config LEMOTE_FULOONG2E
|
||||||
|
select GENERIC_HARDIRQS_NO__DO_IRQ
|
||||||
|
select GENERIC_ISA_DMA_SUPPORT_BROKEN
|
||||||
|
select CPU_HAS_WB
|
||||||
|
+ select LOONGSON_MC146818
|
||||||
|
help
|
||||||
|
Lemote Fuloong(2e) mini-PC board based on the Chinese Loongson-2E CPU and
|
||||||
|
an FPGA northbridge
|
||||||
|
@@ -51,6 +52,7 @@ config LEMOTE_MACH2F
|
||||||
|
select SYS_SUPPORTS_64BIT_KERNEL
|
||||||
|
select SYS_SUPPORTS_HIGHMEM
|
||||||
|
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||||
|
+ select LOONGSON_MC146818
|
||||||
|
help
|
||||||
|
Lemote Loongson 2F family machines utilize the 2F revision of
|
||||||
|
Loongson processor and the AMD CS5536 south bridge.
|
||||||
|
@@ -83,3 +85,7 @@ config LOONGSON_UART_BASE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
depends on EARLY_PRINTK || SERIAL_8250
|
||||||
|
+
|
||||||
|
+config LOONGSON_MC146818
|
||||||
|
+ bool
|
||||||
|
+ default n
|
||||||
|
diff --git a/arch/mips/loongson/common/Makefile b/arch/mips/loongson/common/Makefile
|
||||||
|
index cdd2e81..e526488 100644
|
||||||
|
--- a/arch/mips/loongson/common/Makefile
|
||||||
|
+++ b/arch/mips/loongson/common/Makefile
|
||||||
|
@@ -12,6 +12,7 @@ obj-$(CONFIG_GENERIC_GPIO) += gpio.o
|
||||||
|
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
||||||
|
obj-$(CONFIG_SERIAL_8250) += serial.o
|
||||||
|
obj-$(CONFIG_LOONGSON_UART_BASE) += uart_base.o
|
||||||
|
+obj-$(CONFIG_LOONGSON_MC146818) += rtc.o
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable CS5536 Virtual Support Module(VSM) to virtulize the PCI configure
|
||||||
|
diff --git a/arch/mips/loongson/common/rtc.c b/arch/mips/loongson/common/rtc.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..a90d87c
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/mips/loongson/common/rtc.c
|
||||||
|
@@ -0,0 +1,43 @@
|
||||||
|
+/*
|
||||||
|
+ * Lemote Fuloong platform support
|
||||||
|
+ *
|
||||||
|
+ * Copyright(c) 2010 Arnaud Patard <apatard@mandriva.com>
|
||||||
|
+ *
|
||||||
|
+ * This program is free software; you can redistribute it and/or modify
|
||||||
|
+ * it under the terms of the GNU General Public License as published by
|
||||||
|
+ * the Free Software Foundation; either version 2 of the License, or
|
||||||
|
+ * (at your option) any later version.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <linux/init.h>
|
||||||
|
+#include <linux/kernel.h>
|
||||||
|
+#include <linux/platform_device.h>
|
||||||
|
+#include <linux/mc146818rtc.h>
|
||||||
|
+
|
||||||
|
+struct resource loongson_rtc_resources[] = {
|
||||||
|
+ {
|
||||||
|
+ .start = RTC_PORT(0),
|
||||||
|
+ .end = RTC_PORT(1),
|
||||||
|
+ .flags = IORESOURCE_IO,
|
||||||
|
+ }, {
|
||||||
|
+ .start = RTC_IRQ,
|
||||||
|
+ .end = RTC_IRQ,
|
||||||
|
+ .flags = IORESOURCE_IRQ,
|
||||||
|
+ }
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static struct platform_device loongson_rtc_device = {
|
||||||
|
+ .name = "rtc_cmos",
|
||||||
|
+ .id = -1,
|
||||||
|
+ .resource = loongson_rtc_resources,
|
||||||
|
+ .num_resources = ARRAY_SIZE(loongson_rtc_resources),
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static int __init loongson_rtc_platform_init(void)
|
||||||
|
+{
|
||||||
|
+ platform_device_register(&loongson_rtc_device);
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+device_initcall(loongson_rtc_platform_init);
|
||||||
|
--
|
||||||
|
1.7.1
|
||||||
|
|
|
@ -2,3 +2,5 @@
|
||||||
+ bugfix/all/writeback-Update-dirty-flags-in-two-steps.patch
|
+ bugfix/all/writeback-Update-dirty-flags-in-two-steps.patch
|
||||||
+ bugfix/all/writeback-ensure-WB_SYNC_NONE-writeback-with-sb-pinned-is-sync.patch
|
+ bugfix/all/writeback-ensure-WB_SYNC_NONE-writeback-with-sb-pinned-is-sync.patch
|
||||||
+ bugfix/all/writeback-fix-non-integrity-write-back.patch
|
+ bugfix/all/writeback-fix-non-integrity-write-back.patch
|
||||||
|
+ features/all/RTC-rtc-cmos-Fix-binary-mode-support.patch
|
||||||
|
+ features/mips/MIPS-Loongson-Define-rtc-device-on-MC146818-systems.patch
|
||||||
|
|
Loading…
Reference in New Issue