aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-04-07 15:48:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-04-07 15:48:45 -0400
commit26cf445721763d61b08ce394f8bdbd4c5610b563 (patch)
treea26099dd232b5d0071604787a9eb27b37602645f
parent8b9686ff4ddfdf45662024edd567920e6db87beb (diff)
parent99b662e511e08230e8422e77cbe4fd31ed173df6 (diff)
Merge branch 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: sh: select ARCH_NO_SYSDEV_OPS. sh: fix build error in board-sh7757lcr.c sh: landisk: Remove whitespace sh: landisk: Remove mv_nr_irqs sh: sh-sci: Fix double initialization by serial_console_setup serial: sh-sci: prevent setup of uninitialized serial console dma: shdma: add checking the DMAOR_AE in sh_dmae_err
-rw-r--r--arch/sh/Kconfig1
-rw-r--r--arch/sh/boards/board-sh7757lcr.c2
-rw-r--r--arch/sh/boards/mach-landisk/setup.c5
-rw-r--r--drivers/dma/shdma.c7
-rw-r--r--drivers/tty/serial/sh-sci.c25
5 files changed, 22 insertions, 18 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index bc439de48cd1..4b89da248d17 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -24,6 +24,7 @@ config SUPERH
24 select RTC_LIB 24 select RTC_LIB
25 select GENERIC_ATOMIC64 25 select GENERIC_ATOMIC64
26 select GENERIC_IRQ_SHOW 26 select GENERIC_IRQ_SHOW
27 select ARCH_NO_SYSDEV_OPS
27 help 28 help
28 The SuperH is a RISC processor targeted for use in embedded systems 29 The SuperH is a RISC processor targeted for use in embedded systems
29 and consumer electronics; it was also used in the Sega Dreamcast 30 and consumer electronics; it was also used in the Sega Dreamcast
diff --git a/arch/sh/boards/board-sh7757lcr.c b/arch/sh/boards/board-sh7757lcr.c
index a9e33569ad38..fa2a208ec6cb 100644
--- a/arch/sh/boards/board-sh7757lcr.c
+++ b/arch/sh/boards/board-sh7757lcr.c
@@ -17,7 +17,7 @@
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/mmc/host.h> 18#include <linux/mmc/host.h>
19#include <linux/mmc/sh_mmcif.h> 19#include <linux/mmc/sh_mmcif.h>
20#include <linux/mfd/sh_mobile_sdhi.h> 20#include <linux/mmc/sh_mobile_sdhi.h>
21#include <cpu/sh7757.h> 21#include <cpu/sh7757.h>
22#include <asm/sh_eth.h> 22#include <asm/sh_eth.h>
23#include <asm/heartbeat.h> 23#include <asm/heartbeat.h>
diff --git a/arch/sh/boards/mach-landisk/setup.c b/arch/sh/boards/mach-landisk/setup.c
index 94186cf079b6..f1147caebacf 100644
--- a/arch/sh/boards/mach-landisk/setup.c
+++ b/arch/sh/boards/mach-landisk/setup.c
@@ -23,7 +23,7 @@
23 23
24static void landisk_power_off(void) 24static void landisk_power_off(void)
25{ 25{
26 __raw_writeb(0x01, PA_SHUTDOWN); 26 __raw_writeb(0x01, PA_SHUTDOWN);
27} 27}
28 28
29static struct resource cf_ide_resources[3]; 29static struct resource cf_ide_resources[3];
@@ -85,7 +85,7 @@ device_initcall(landisk_devices_setup);
85 85
86static void __init landisk_setup(char **cmdline_p) 86static void __init landisk_setup(char **cmdline_p)
87{ 87{
88 /* LED ON */ 88 /* LED ON */
89 __raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED); 89 __raw_writeb(__raw_readb(PA_LED) | 0x03, PA_LED);
90 90
91 printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n"); 91 printk(KERN_INFO "I-O DATA DEVICE, INC. \"LANDISK Series\" support.\n");
@@ -97,7 +97,6 @@ static void __init landisk_setup(char **cmdline_p)
97 */ 97 */
98static struct sh_machine_vector mv_landisk __initmv = { 98static struct sh_machine_vector mv_landisk __initmv = {
99 .mv_name = "LANDISK", 99 .mv_name = "LANDISK",
100 .mv_nr_irqs = 72,
101 .mv_setup = landisk_setup, 100 .mv_setup = landisk_setup,
102 .mv_init_irq = init_landisk_IRQ, 101 .mv_init_irq = init_landisk_IRQ,
103}; 102};
diff --git a/drivers/dma/shdma.c b/drivers/dma/shdma.c
index 6451b581a70b..d50da41ac328 100644
--- a/drivers/dma/shdma.c
+++ b/drivers/dma/shdma.c
@@ -865,7 +865,12 @@ static unsigned int sh_dmae_reset(struct sh_dmae_device *shdev)
865 865
866static irqreturn_t sh_dmae_err(int irq, void *data) 866static irqreturn_t sh_dmae_err(int irq, void *data)
867{ 867{
868 return IRQ_RETVAL(sh_dmae_reset(data)); 868 struct sh_dmae_device *shdev = data;
869
870 if (dmaor_read(shdev) & DMAOR_AE)
871 return IRQ_RETVAL(sh_dmae_reset(data));
872 else
873 return IRQ_NONE;
869} 874}
870 875
871static void dmae_do_tasklet(unsigned long data) 876static void dmae_do_tasklet(unsigned long data)
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index a7b083f4ea78..920a6f929c8b 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -1836,6 +1836,12 @@ static int __devinit serial_console_setup(struct console *co, char *options)
1836 sci_port = &sci_ports[co->index]; 1836 sci_port = &sci_ports[co->index];
1837 port = &sci_port->port; 1837 port = &sci_port->port;
1838 1838
1839 /*
1840 * Refuse to handle uninitialized ports.
1841 */
1842 if (!port->ops)
1843 return -ENODEV;
1844
1839 ret = sci_remap_port(port); 1845 ret = sci_remap_port(port);
1840 if (unlikely(ret != 0)) 1846 if (unlikely(ret != 0))
1841 return ret; 1847 return ret;
@@ -1866,13 +1872,6 @@ static struct console serial_console = {
1866 .data = &sci_uart_driver, 1872 .data = &sci_uart_driver,
1867}; 1873};
1868 1874
1869static int __init sci_console_init(void)
1870{
1871 register_console(&serial_console);
1872 return 0;
1873}
1874console_initcall(sci_console_init);
1875
1876static struct console early_serial_console = { 1875static struct console early_serial_console = {
1877 .name = "early_ttySC", 1876 .name = "early_ttySC",
1878 .write = serial_console_write, 1877 .write = serial_console_write,
@@ -1901,18 +1900,18 @@ static int __devinit sci_probe_earlyprintk(struct platform_device *pdev)
1901 register_console(&early_serial_console); 1900 register_console(&early_serial_console);
1902 return 0; 1901 return 0;
1903} 1902}
1903
1904#define SCI_CONSOLE (&serial_console)
1905
1904#else 1906#else
1905static inline int __devinit sci_probe_earlyprintk(struct platform_device *pdev) 1907static inline int __devinit sci_probe_earlyprintk(struct platform_device *pdev)
1906{ 1908{
1907 return -EINVAL; 1909 return -EINVAL;
1908} 1910}
1909#endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */
1910 1911
1911#if defined(CONFIG_SERIAL_SH_SCI_CONSOLE) 1912#define SCI_CONSOLE NULL
1912#define SCI_CONSOLE (&serial_console) 1913
1913#else 1914#endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */
1914#define SCI_CONSOLE 0
1915#endif
1916 1915
1917static char banner[] __initdata = 1916static char banner[] __initdata =
1918 KERN_INFO "SuperH SCI(F) driver initialized\n"; 1917 KERN_INFO "SuperH SCI(F) driver initialized\n";