]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branch 'master' of git://git.marvell.com/orion into devel
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Thu, 19 Mar 2009 23:10:40 +0000 (23:10 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 19 Mar 2009 23:10:40 +0000 (23:10 +0000)
Conflicts:

arch/arm/mach-mx1/devices.c

1  2 
arch/arm/kernel/entry-common.S
arch/arm/mach-mx1/mx1ads.c
arch/arm/mach-omap2/board-omap3beagle.c
arch/arm/plat-omap/common.c
arch/arm/plat-omap/include/mach/common.h
arch/arm/plat-omap/include/mach/pm.h

index b8c1f1411440993b99681fde45426d7455328ce2,159d0416f270cb34988b7f5a95eb971a05004597..b55cb0331809ebc025344d9156c300dd2fdc9edf
@@@ -11,7 -11,6 +11,7 @@@
  #include <asm/unistd.h>
  #include <asm/ftrace.h>
  #include <mach/entry-macro.S>
 +#include <asm/unwind.h>
  
  #include "entry-header.S"
  
@@@ -23,8 -22,6 +23,8 @@@
   * stack.
   */
  ret_fast_syscall:
 + UNWIND(.fnstart      )
 + UNWIND(.cantunwind   )
        disable_irq                             @ disable interrupts
        ldr     r1, [tsk, #TI_FLAGS]
        tst     r1, #_TIF_WORK_MASK
@@@ -41,7 -38,6 +41,7 @@@
        mov     r0, r0
        add     sp, sp, #S_FRAME_SIZE - S_PC
        movs    pc, lr                          @ return & move spsr_svc into cpsr
 + UNWIND(.fnend                )
  
  /*
   * Ok, we need to do extra processing, enter the slow path.
@@@ -115,6 -111,7 +115,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)
        .globl ftrace_call
  ftrace_call:
        bl ftrace_stub
+       ldr lr, [fp, #-4]                       @ restore lr
        ldmia sp!, {r0-r3, pc}
  
  #else
@@@ -137,6 -135,7 +139,7 @@@ ENTRY(mcount
        adr r0, ftrace_stub
        cmp r0, r2
        bne trace
+       ldr lr, [fp, #-4]                       @ restore lr
        ldmia sp!, {r0-r3, pc}
  
  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 89738fe576b1cb57b21d74ba4bfce9e4c70cec27,3200cf60e384d95df97d435b73b50e90f36aaa6f..7ae229bc1b796451bc1a097b1746aaef2d7ef67d
  #include <linux/init.h>
  #include <linux/platform_device.h>
  #include <linux/mtd/physmap.h>
 +#include <linux/i2c.h>
 +#include <linux/i2c/pcf857x.h>
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/time.h>
  
+ #include <mach/irqs.h>
  #include <mach/hardware.h>
  #include <mach/common.h>
  #include <mach/imx-uart.h>
 -#include <mach/iomux-mx1-mx2.h>
 +#include <mach/irqs.h>
 +#ifdef CONFIG_I2C_IMX
 +#include <mach/i2c.h>
 +#endif
 +#include <mach/iomux.h>
  #include "devices.h"
  
  /*
@@@ -109,55 -104,6 +110,55 @@@ static struct platform_device flash_dev
        .num_resources = 1,
  };
  
 +/*
 + * I2C
 + */
 +
 +#ifdef CONFIG_I2C_IMX
 +static int i2c_pins[] = {
 +      PA15_PF_I2C_SDA,
 +      PA16_PF_I2C_SCL,
 +};
 +
 +static int i2c_init(struct device *dev)
 +{
 +      return mxc_gpio_setup_multiple_pins(i2c_pins,
 +                      ARRAY_SIZE(i2c_pins), "I2C");
 +}
 +
 +static void i2c_exit(struct device *dev)
 +{
 +      mxc_gpio_release_multiple_pins(i2c_pins,
 +                      ARRAY_SIZE(i2c_pins));
 +}
 +
 +static struct pcf857x_platform_data pcf857x_data[] = {
 +      {
 +              .gpio_base = 4 * 32,
 +      }, {
 +              .gpio_base = 4 * 32 + 16,
 +      }
 +};
 +
 +static struct imxi2c_platform_data mx1ads_i2c_data = {
 +      .bitrate = 100000,
 +      .init = i2c_init,
 +      .exit = i2c_exit,
 +};
 +
 +static struct i2c_board_info mx1ads_i2c_devices[] = {
 +      {
 +              I2C_BOARD_INFO("pcf857x", 0x22),
 +              .type = "pcf8575",
 +              .platform_data = &pcf857x_data[0],
 +      }, {
 +              I2C_BOARD_INFO("pcf857x", 0x24),
 +              .type = "pcf8575",
 +              .platform_data = &pcf857x_data[1],
 +      },
 +};
 +#endif
 +
  /*
   * Board init
   */
@@@ -169,19 -115,12 +170,19 @@@ static void __init mx1ads_init(void
  
        /* Physmap flash */
        mxc_register_device(&flash_device, &mx1ads_flash_data);
 +
 +      /* I2C */
 +#ifdef CONFIG_I2C_IMX
 +      i2c_register_board_info(0, mx1ads_i2c_devices,
 +                              ARRAY_SIZE(mx1ads_i2c_devices));
 +
 +      mxc_register_device(&imx_i2c_device, &mx1ads_i2c_data);
 +#endif
  }
  
  static void __init mx1ads_timer_init(void)
  {
 -      mxc_clocks_init(32000);
 -      mxc_timer_init("gpt_clk");
 +      mx1_clocks_init(32000);
  }
  
  struct sys_timer mx1ads_timer = {
index ad312ccf2ec5152ce61f90d8db1268baf07e8c00,e39cd2c46cfa328f63e3a765c4eecb53d57caf68..b70b1e65034bc135452d35689271b19e97a0553c
@@@ -178,13 -178,15 +178,15 @@@ static int __init omap3_beagle_i2c_init
  #ifdef CONFIG_I2C2_OMAP_BEAGLE
        omap_register_i2c_bus(2, 400, NULL, 0);
  #endif
-       omap_register_i2c_bus(3, 400, NULL, 0);
+       /* Bus 3 is attached to the DVI port where devices like the pico DLP
+        * projector don't work reliably with 400kHz */
+       omap_register_i2c_bus(3, 100, NULL, 0);
        return 0;
  }
  
  static void __init omap3_beagle_init_irq(void)
  {
 -      omap2_init_common_hw();
 +      omap2_init_common_hw(NULL);
        omap_init_irq();
        omap_gpio_init();
  }
index 187239c054c9ac698dff423192bb03f332b5e7fe,6825fbb5a056d91682c7b3c67e669a9d4fb780aa..d1797147732f217ce4906f5388e55956b7f4f62c
@@@ -199,21 -199,17 +199,17 @@@ static struct clocksource clocksource_3
        .flags          = CLOCK_SOURCE_IS_CONTINUOUS,
  };
  
- /*
-  * Rounds down to nearest nsec.
-  */
- unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
- {
-       return cyc2ns(&clocksource_32k, ticks_32k);
- }
  /*
   * Returns current time from boot in nsecs. It's OK for this to wrap
   * around for now, as it's just a relative time stamp.
   */
  unsigned long long sched_clock(void)
  {
-       return omap_32k_ticks_to_nsecs(omap_32k_read());
+       unsigned long long ret;
+       ret = (unsigned long long)omap_32k_read();
+       ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
+       return ret;
  }
  
  static int __init omap_init_clocksource_32k(void)
@@@ -249,7 -245,7 +245,7 @@@ static struct omap_globals *omap2_globa
  static void __init __omap2_set_globals(void)
  {
        omap2_set_globals_tap(omap2_globals);
 -      omap2_set_globals_memory(omap2_globals);
 +      omap2_set_globals_sdrc(omap2_globals);
        omap2_set_globals_control(omap2_globals);
        omap2_set_globals_prcm(omap2_globals);
  }
index f3444a66a57e855b374762824b87bdd7d63cdd4f,e746ec7e785e30ab17f4cce27e8bc797d49fd6c3..0ecf36deb17b36e1477e2aa7b04139ae09a0f1ad
@@@ -35,7 -35,7 +35,7 @@@ extern void omap_map_common_io(void)
  extern struct sys_timer omap_timer;
  extern void omap_serial_init(void);
  extern void omap_serial_enable_clocks(int enable);
- #ifdef CONFIG_I2C_OMAP
+ #if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
  extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
                                 struct i2c_board_info const *info,
                                 unsigned len);
@@@ -65,7 -65,7 +65,7 @@@ void omap2_set_globals_343x(void)
  
  /* These get called from omap2_set_globals_xxxx(), do not call these */
  void omap2_set_globals_tap(struct omap_globals *);
 -void omap2_set_globals_memory(struct omap_globals *);
 +void omap2_set_globals_sdrc(struct omap_globals *);
  void omap2_set_globals_control(struct omap_globals *);
  void omap2_set_globals_prcm(struct omap_globals *);
  
index ca81830b4f86d8834c642a6a9451571b49501d3c,37e2f0f38b462bb803bd6615dc6c070909993a40..ce6ee7927537f1bcb23014387194a64f44978b64
        !defined(CONFIG_ARCH_OMAP15XX) && \
        !defined(CONFIG_ARCH_OMAP16XX) && \
        !defined(CONFIG_ARCH_OMAP24XX)
- #error "Power management for this processor not implemented yet"
+ #warning "Power management for this processor not implemented yet"
  #endif
  
  #ifndef __ASSEMBLER__
  extern void prevent_idle_sleep(void);
  extern void allow_idle_sleep(void);
  
 -/**
 - * clk_deny_idle - Prevents the clock from being idled during MPU idle
 - * @clk: clock signal handle
 - */
 -void clk_deny_idle(struct clk *clk);
 -
 -/**
 - * clk_allow_idle - Counters previous clk_deny_idle
 - * @clk: clock signal handle
 - */
 -void clk_allow_idle(struct clk *clk);
 -
  extern void omap_pm_idle(void);
  extern void omap_pm_suspend(void);
  extern void omap730_cpu_suspend(unsigned short, unsigned short);