Merge branch 'omap-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind...
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Mon, 9 Mar 2009 09:42:15 +0000 (09:42 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Mon, 9 Mar 2009 09:42:15 +0000 (09:42 +0000)
12 files changed:
arch/arm/kernel/entry-common.S
arch/arm/mach-ep93xx/include/mach/platform.h
arch/arm/mach-orion5x/common.c
arch/arm/mach-s3c6410/mach-smdk6410.c
arch/arm/plat-s3c64xx/clock.c
arch/arm/plat-s3c64xx/gpiolib.c
arch/arm/plat-s3c64xx/include/plat/irqs.h
arch/arm/plat-s3c64xx/irq-eint.c
arch/arm/plat-s3c64xx/irq.c
arch/arm/plat-s3c64xx/s3c6400-clock.c
arch/powerpc/platforms/86xx/gef_sbc610.c
drivers/gpu/drm/drm_stub.c

index 49a6ba9..159d041 100644 (file)
@@ -111,6 +111,7 @@ ENTRY(mcount)
        .globl mcount_call
 mcount_call:
        bl ftrace_stub
+       ldr lr, [fp, #-4]                       @ restore lr
        ldmia sp!, {r0-r3, pc}
 
 ENTRY(ftrace_caller)
@@ -122,6 +123,7 @@ ENTRY(ftrace_caller)
        .globl ftrace_call
 ftrace_call:
        bl ftrace_stub
+       ldr lr, [fp, #-4]                       @ restore lr
        ldmia sp!, {r0-r3, pc}
 
 #else
@@ -133,6 +135,7 @@ ENTRY(mcount)
        adr r0, ftrace_stub
        cmp r0, r2
        bne trace
+       ldr lr, [fp, #-4]                       @ restore lr
        ldmia sp!, {r0-r3, pc}
 
 trace:
@@ -141,6 +144,7 @@ trace:
        sub r0, r0, #MCOUNT_INSN_SIZE
        mov lr, pc
        mov pc, r2
+       mov lr, r1                              @ restore lr
        ldmia sp!, {r0-r3, pc}
 
 #endif /* CONFIG_DYNAMIC_FTRACE */
index 88f7e88..05f0f4f 100644 (file)
@@ -4,6 +4,8 @@
 
 #ifndef __ASSEMBLY__
 
+struct i2c_board_info;
+
 struct ep93xx_eth_data
 {
        unsigned char   dev_addr[6];
index 0a62337..8a0e49d 100644 (file)
@@ -431,6 +431,10 @@ void __init orion5x_uart1_init(void)
 /*****************************************************************************
  * XOR engine
  ****************************************************************************/
+struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
+       .dram           = &orion5x_mbus_dram_info,
+};
+
 static struct resource orion5x_xor_shared_resources[] = {
        {
                .name   = "xor low",
@@ -448,6 +452,9 @@ static struct resource orion5x_xor_shared_resources[] = {
 static struct platform_device orion5x_xor_shared = {
        .name           = MV_XOR_SHARED_NAME,
        .id             = 0,
+       .dev            = {
+               .platform_data  = &orion5x_xor_shared_data,
+       },
        .num_resources  = ARRAY_SIZE(orion5x_xor_shared_resources),
        .resource       = orion5x_xor_shared_resources,
 };
index 3c4d471..25f7935 100644 (file)
@@ -129,7 +129,7 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = {
        .vidcon1        = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
 };
 
-struct map_desc smdk6410_iodesc[] = {};
+static struct map_desc smdk6410_iodesc[] = {};
 
 static struct platform_device *smdk6410_devices[] __initdata = {
 #ifdef CONFIG_SMDK6410_SD_CH0
@@ -146,7 +146,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
 
 static struct i2c_board_info i2c_devs0[] __initdata = {
        { I2C_BOARD_INFO("24c08", 0x50), },
-       { I2C_BOARD_INFO("WM8580", 0X1b), },
+       { I2C_BOARD_INFO("wm8580", 0x1b), },
 };
 
 static struct i2c_board_info i2c_devs1[] __initdata = {
index 136c982..ad1b968 100644 (file)
@@ -248,7 +248,7 @@ static struct clk *clks[] __initdata = {
        &clk_48m,
 };
 
-void s3c64xx_register_clocks(void)
+void __init s3c64xx_register_clocks(void)
 {
        struct clk *clkp;
        int ret;
index cc62941..ee9188a 100644 (file)
@@ -417,4 +417,4 @@ static __init int s3c64xx_gpiolib_init(void)
        return 0;
 }
 
-arch_initcall(s3c64xx_gpiolib_init);
+core_initcall(s3c64xx_gpiolib_init);
index 2846f55..f865bf4 100644 (file)
 #define IRQ_ONENAND1           S3C64XX_IRQ_VIC1(12)
 #define IRQ_NFC                        S3C64XX_IRQ_VIC1(13)
 #define IRQ_CFCON              S3C64XX_IRQ_VIC1(14)
-#define IRQ_UHOST              S3C64XX_IRQ_VIC1(15)
+#define IRQ_USBH               S3C64XX_IRQ_VIC1(15)
 #define IRQ_SPI0               S3C64XX_IRQ_VIC1(16)
 #define IRQ_SPI1               S3C64XX_IRQ_VIC1(17)
 #define IRQ_IIC                        S3C64XX_IRQ_VIC1(18)
index ebb305c..cf52482 100644 (file)
 
 #include <linux/kernel.h>
 #include <linux/interrupt.h>
+#include <linux/gpio.h>
 #include <linux/irq.h>
 #include <linux/io.h>
 
 #include <asm/hardware/vic.h>
 
 #include <plat/regs-irqtype.h>
+#include <plat/regs-gpio.h>
+#include <plat/gpio-cfg.h>
 
 #include <mach/map.h>
 #include <plat/cpu.h>
@@ -74,6 +77,7 @@ static void s3c_irq_eint_maskack(unsigned int irq)
 static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
 {
        int offs = eint_offset(irq);
+       int pin;
        int shift;
        u32 ctrl, mask;
        u32 newvalue = 0;
@@ -125,6 +129,15 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
        ctrl |= newvalue << shift;
        __raw_writel(ctrl, reg);
 
+       /* set the GPIO pin appropriately */
+
+       if (offs < 23)
+               pin = S3C64XX_GPN(offs);
+       else
+               pin = S3C64XX_GPM(offs - 23);
+
+       s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
+
        return 0;
 }
 
@@ -181,7 +194,7 @@ static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
        s3c_irq_demux_eint(20, 27);
 }
 
-int __init s3c64xx_init_irq_eint(void)
+static int __init s3c64xx_init_irq_eint(void)
 {
        int irq;
 
index a94f1d5..f22edf7 100644 (file)
@@ -207,7 +207,7 @@ static struct irq_chip s3c_irq_uart = {
 
 static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
 {
-       void *reg_base = uirq->regs;
+       void __iomem *reg_base = uirq->regs;
        unsigned int irq;
        int offs;
 
index 8d9a0ca..05b1752 100644 (file)
@@ -36,7 +36,7 @@
  * ext_xtal_mux for want of an actual name from the manual.
 */
 
-struct clk clk_ext_xtal_mux = {
+static struct clk clk_ext_xtal_mux = {
        .name           = "ext_xtal",
        .id             = -1,
 };
@@ -63,7 +63,7 @@ struct clksrc_clk {
        void __iomem            *reg_divider;
 };
 
-struct clk clk_fout_apll = {
+static struct clk clk_fout_apll = {
        .name           = "fout_apll",
        .id             = -1,
 };
@@ -78,7 +78,7 @@ static struct clk_sources clk_src_apll = {
        .nr_sources     = ARRAY_SIZE(clk_src_apll_list),
 };
 
-struct clksrc_clk clk_mout_apll = {
+static struct clksrc_clk clk_mout_apll = {
        .clk    = {
                .name           = "mout_apll",
                .id             = -1,
@@ -88,7 +88,7 @@ struct clksrc_clk clk_mout_apll = {
        .sources        = &clk_src_apll,
 };
 
-struct clk clk_fout_epll = {
+static struct clk clk_fout_epll = {
        .name           = "fout_epll",
        .id             = -1,
 };
@@ -103,7 +103,7 @@ static struct clk_sources clk_src_epll = {
        .nr_sources     = ARRAY_SIZE(clk_src_epll_list),
 };
 
-struct clksrc_clk clk_mout_epll = {
+static struct clksrc_clk clk_mout_epll = {
        .clk    = {
                .name           = "mout_epll",
                .id             = -1,
@@ -123,7 +123,7 @@ static struct clk_sources clk_src_mpll = {
        .nr_sources     = ARRAY_SIZE(clk_src_mpll_list),
 };
 
-struct clksrc_clk clk_mout_mpll = {
+static struct clksrc_clk clk_mout_mpll = {
        .clk = {
                .name           = "mout_mpll",
                .id             = -1,
@@ -145,7 +145,7 @@ static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk)
        return rate;
 }
 
-struct clk clk_dout_mpll = {
+static struct clk clk_dout_mpll = {
        .name           = "dout_mpll",
        .id             = -1,
        .parent         = &clk_mout_mpll.clk,
@@ -189,10 +189,10 @@ static struct clk_sources clkset_uart = {
 };
 
 static struct clk *clkset_uhost_list[] = {
+       &clk_48m,
        &clk_mout_epll.clk,
        &clk_dout_mpll,
        &clk_fin_epll,
-       &clk_48m,
 };
 
 static struct clk_sources clkset_uhost = {
@@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate)
 
        rate = clk_round_rate(clk, rate);
        div = clk_get_rate(clk->parent) / rate;
+       if (div > 16)
+               return -EINVAL;
 
        val = __raw_readl(reg);
-       val &= ~sclk->mask;
-       val |= (rate - 1) << sclk->shift;
+       val &= ~(0xf << sclk->shift);
+       val |= (div - 1) << sclk->shift;
        __raw_writel(val, reg);
 
        return 0;
@@ -351,7 +353,7 @@ static struct clksrc_clk clk_mmc2 = {
 
 static struct clksrc_clk clk_usbhost = {
        .clk    = {
-               .name           = "usb-host-bus",
+               .name           = "usb-bus-host",
                .id             = -1,
                .ctrlbit        = S3C_CLKCON_SCLK_UHOST,
                .enable         = s3c64xx_sclk_ctrl,
index fb371f5..d6b772b 100644 (file)
@@ -142,6 +142,10 @@ static void __init gef_sbc610_nec_fixup(struct pci_dev *pdev)
 {
        unsigned int val;
 
+       /* Do not do the fixup on other platforms! */
+       if (!machine_is(gef_sbc610))
+               return;
+
        printk(KERN_INFO "Running NEC uPD720101 Fixup\n");
 
        /* Ensure ports 1, 2, 3, 4 & 5 are enabled */
index 096e2a3..7c8b15b 100644 (file)
@@ -168,7 +168,7 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
            file_priv->minor->master != file_priv->master) {
                mutex_lock(&dev->struct_mutex);
                file_priv->minor->master = drm_master_get(file_priv->master);
-               mutex_lock(&dev->struct_mutex);
+               mutex_unlock(&dev->struct_mutex);
        }
 
        return 0;