1. 29 4月, 2013 1 次提交
  2. 17 4月, 2013 1 次提交
  3. 18 3月, 2013 1 次提交
    • A
      ARM: fix CONFIG_VIRT_TO_BUS handling · b4811bac
      Arnd Bergmann 提交于
      887cbce0 "arch Kconfig: centralise CONFIG_ARCH_NO_VIRT_TO_BUS"
      and  4febd95a "Select VIRT_TO_BUS directly where needed" from
      Stephen Rothwell changed globally how CONFIG_VIRT_TO_BUS is
      selected, while my own a5d533ee "ARM: disable virt_to_bus/
      virt_to_bus almost everywhere" was merged at the same time and
      changed which platforms select it on ARM.
      
      The result of this conflict was that we again see CONFIG_VIRT_TO_BUS
      on all ARM systems. This patch fixes up the problem and removes
      CONFIG_ARCH_NO_VIRT_TO_BUS again on ARM.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Russell King <linux@arm.linux.org.uk>
      Cc: Stephen Rothwell <sfr@canb.auug.org.au>
      b4811bac
  4. 16 3月, 2013 1 次提交
  5. 15 3月, 2013 4 次提交
    • S
      ARM: i.MX35: enable MAX clock · 5dc2eb7d
      Sascha Hauer 提交于
      The i.MX35 has two bits per clock gate which are decoded as follows:
            0b00 -> clock off
            0b01 -> clock is on in run mode, off in wait/doze
            0b10 -> clock is on in run/wait mode, off in doze
            0b11 -> clock is always on
      
      The reset value for the MAX clock is 0b10.
      
      The MAX clock is needed by the SoC, yet unused in the Kernel, so the
      common clock framework will disable it during late init time. It will
      only disable clocks though which it detects as being turned on. This
      detection is made depending on the lower bit of the gate. If the reset
      value has been altered by the bootloader to 0b11 the clock framework
      will detect the clock as turned on, yet unused, hence it will turn it
      off and the system locks up.
      
      This patch turns the MAX clock on unconditionally making the Kernel
      independent of the bootloader.
      Signed-off-by: NSascha Hauer <s.hauer@pengutronix.de>
      5dc2eb7d
    • S
      ARM: Scorpion is a v7 architecture, not v6 · 8dda05cc
      Stephen Boyd 提交于
      Scorpion processors have always been v7 CPUs. Fix the Kconfig
      text to reflect this.
      Reported-by: NStepan Moskovchenko <stepanm@codeaurora.org>
      Signed-off-by: NStephen Boyd <sboyd@codeaurora.org>
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      8dda05cc
    • H
      ARM: mmp: add platform_device head file in gplugd · e71dc5f7
      Haojian Zhuang 提交于
      arch/arm/mach-mmp/gplugd.c: In function ‘gplugd_init’:
      arch/arm/mach-mmp/gplugd.c:188:2: error: implicit declaration of
      function ‘platform_device_register’
      [-Werror=implicit-function-declaration]
      cc1: some warnings being treated as errors
      make[1]: *** [arch/arm/mach-mmp/gplugd.o] Error 1
      make: *** [arch/arm/mach-mmp] Error 2
      
      So append platform_device.h to resolve build issue.
      Signed-off-by: NHaojian Zhuang <haojian.zhuang@linaro.org>
      e71dc5f7
    • A
      [media] s5p-fimc: fix s5pv210 build · 01ffe957
      Arnd Bergmann 提交于
      56bc911a "[media] s5p-fimc: Redefine platform data structure for fimc-is"
      changed the bus_type member of struct fimc_source_info treewide, but
      got one instance wrong in mach-s5pv210, which was evidently not
      even build tested.
      
      This adds the missing change to get s5pv210_defconfig to build again.
      Applies on the Mauro's media tree.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Cc: Kukjin Kim <kgene.kim@samsung.com>
      Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
      01ffe957
  6. 14 3月, 2013 4 次提交
  7. 13 3月, 2013 4 次提交
  8. 12 3月, 2013 8 次提交
  9. 11 3月, 2013 2 次提交
  10. 09 3月, 2013 11 次提交
  11. 08 3月, 2013 2 次提交
    • S
      ARM: shmobile: marzen: Include mmc/host.h · 44e9ac45
      Simon Horman 提交于
      mmc/host.h provides MMC_CAP_SD_HIGHSPEED which is used in board-marzen.c
      
      This resolves a build problem observed when compiling with
      "mmc: tmio: remove unused and deprecated symbols" applied.
      Acked-by: NGuennadi Liakhovetski <g.liakhovetski@gmx.de>
      Signed-off-by: NSimon Horman <horms+renesas@verge.net.au>
      44e9ac45
    • I
      ARM: 7668/1: fix memset-related crashes caused by recent GCC (4.7.2) optimizations · 455bd4c4
      Ivan Djelic 提交于
      Recent GCC versions (e.g. GCC-4.7.2) perform optimizations based on
      assumptions about the implementation of memset and similar functions.
      The current ARM optimized memset code does not return the value of
      its first argument, as is usually expected from standard implementations.
      
      For instance in the following function:
      
      void debug_mutex_lock_common(struct mutex *lock, struct mutex_waiter *waiter)
      {
      	memset(waiter, MUTEX_DEBUG_INIT, sizeof(*waiter));
      	waiter->magic = waiter;
      	INIT_LIST_HEAD(&waiter->list);
      }
      
      compiled as:
      
      800554d0 <debug_mutex_lock_common>:
      800554d0:       e92d4008        push    {r3, lr}
      800554d4:       e1a00001        mov     r0, r1
      800554d8:       e3a02010        mov     r2, #16 ; 0x10
      800554dc:       e3a01011        mov     r1, #17 ; 0x11
      800554e0:       eb04426e        bl      80165ea0 <memset>
      800554e4:       e1a03000        mov     r3, r0
      800554e8:       e583000c        str     r0, [r3, #12]
      800554ec:       e5830000        str     r0, [r3]
      800554f0:       e5830004        str     r0, [r3, #4]
      800554f4:       e8bd8008        pop     {r3, pc}
      
      GCC assumes memset returns the value of pointer 'waiter' in register r0; causing
      register/memory corruptions.
      
      This patch fixes the return value of the assembly version of memset.
      It adds a 'mov' instruction and merges an additional load+store into
      existing load/store instructions.
      For ease of review, here is a breakdown of the patch into 4 simple steps:
      
      Step 1
      ======
      Perform the following substitutions:
      ip -> r8, then
      r0 -> ip,
      and insert 'mov ip, r0' as the first statement of the function.
      At this point, we have a memset() implementation returning the proper result,
      but corrupting r8 on some paths (the ones that were using ip).
      
      Step 2
      ======
      Make sure r8 is saved and restored when (! CALGN(1)+0) == 1:
      
      save r8:
      -       str     lr, [sp, #-4]!
      +       stmfd   sp!, {r8, lr}
      
      and restore r8 on both exit paths:
      -       ldmeqfd sp!, {pc}               @ Now <64 bytes to go.
      +       ldmeqfd sp!, {r8, pc}           @ Now <64 bytes to go.
      (...)
              tst     r2, #16
              stmneia ip!, {r1, r3, r8, lr}
      -       ldr     lr, [sp], #4
      +       ldmfd   sp!, {r8, lr}
      
      Step 3
      ======
      Make sure r8 is saved and restored when (! CALGN(1)+0) == 0:
      
      save r8:
      -       stmfd   sp!, {r4-r7, lr}
      +       stmfd   sp!, {r4-r8, lr}
      
      and restore r8 on both exit paths:
              bgt     3b
      -       ldmeqfd sp!, {r4-r7, pc}
      +       ldmeqfd sp!, {r4-r8, pc}
      (...)
              tst     r2, #16
              stmneia ip!, {r4-r7}
      -       ldmfd   sp!, {r4-r7, lr}
      +       ldmfd   sp!, {r4-r8, lr}
      
      Step 4
      ======
      Rewrite register list "r4-r7, r8" as "r4-r8".
      Signed-off-by: NIvan Djelic <ivan.djelic@parrot.com>
      Reviewed-by: NNicolas Pitre <nico@linaro.org>
      Signed-off-by: NDirk Behme <dirk.behme@gmail.com>
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      455bd4c4
  12. 07 3月, 2013 1 次提交