]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge omap-drivers
authorTony Lindgren <tony@atomide.com>
Thu, 21 Jun 2007 07:36:21 +0000 (00:36 -0700)
committerTony Lindgren <tony@atomide.com>
Thu, 21 Jun 2007 07:36:21 +0000 (00:36 -0700)
Merge branches 'master' and 'omap-drivers'

Conflicts:

arch/arm/configs/omap_h2_1610_defconfig
arch/arm/configs/omap_osk_5912_defconfig
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-palmte.c
arch/arm/mach-omap1/board-palmtt.c
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-sx1.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-apollon-keys.c
arch/arm/mach-omap2/board-apollon.c
arch/arm/mach-omap2/board-h4.c
arch/arm/mach-omap2/board-n800-audio.c
arch/arm/mach-omap2/board-n800-dsp.c
arch/arm/mach-omap2/board-n800-usb.c
arch/arm/mach-omap2/board-n800.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/memory.c
arch/arm/mach-omap2/pm.c
arch/arm/mach-omap2/sleep.S
arch/arm/plat-omap/Makefile
arch/arm/plat-omap/common.c
arch/arm/plat-omap/dsp/dsp_common.c
arch/arm/plat-omap/dsp/dsp_common.h
arch/arm/plat-omap/dsp/omap2_dsp.h
arch/arm/plat-omap/timer32k.c
drivers/Makefile
drivers/i2c/busses/i2c-omap.c
drivers/i2c/chips/Kconfig
drivers/i2c/chips/Makefile
drivers/i2c/chips/menelaus.c
drivers/i2c/chips/tlv320aic23.c
drivers/i2c/chips/twl4030_core.c
drivers/mtd/onenand/omap2.c
drivers/spi/Kconfig
drivers/spi/omap2_mcspi.c
drivers/spi/tsc2101.c
drivers/spi/tsc2102.c
drivers/spi/tsc2301-core.c
drivers/video/omap/Kconfig
drivers/video/omap/Makefile
include/asm-arm/arch-omap/board-2430sdp.h
include/asm-arm/arch-omap/eac.h
include/asm-arm/arch-omap/gpio.h
include/asm-arm/arch-omap/io.h
include/asm-arm/arch-omap/menelaus.h
include/asm-arm/arch-omap/mmc.h
include/asm-arm/arch-omap/omap24xx.h
include/asm-arm/arch-omap/onenand.h
include/asm-arm/arch-omap/pm.h
include/asm-arm/arch-omap/twl4030.h
include/asm-arm/hardware/tsc2101.h
include/linux/i2c-id.h
include/linux/spi/tsc2102.h
net/ipv4/netfilter/Kconfig

1  2 
Makefile
arch/arm/boot/compressed/head.S
arch/arm/vfp/vfpmodule.c
drivers/media/video/Kconfig
drivers/mmc/host/omap.c
drivers/usb/gadget/omap_udc.c

diff --combined Makefile
index c96212206f624a882fcf5cbd5a51b96495e70a7f,b76ee94a6c9ff9436f6fa59e0a2c779850a0715d..a9d1b550ddc4c45f8257f103f3190269fbb3a909
+++ b/Makefile
@@@ -1,8 -1,8 +1,8 @@@
  VERSION = 2
  PATCHLEVEL = 6
  SUBLEVEL = 22
- EXTRAVERSION = -rc4
- NAME = Jeff Thinks I Should Change This, But To What?
+ EXTRAVERSION = -rc5
+ NAME = Holy Dancing Manatees, Batman!
  
  # *DOCUMENTATION*
  # To see a list of typical targets execute "make help"
@@@ -16,9 -16,6 +16,9 @@@
  # o  print "Entering directory ...";
  MAKEFLAGS += -rR --no-print-directory
  
 +# Add custom flags here to avoid conflict with updates
 +EXTRAVERSION := $(EXTRAVERSION)-omap1
 +
  # We are using a recursive build, so we need to do a little thinking
  # to get the ordering right.
  #
@@@ -166,8 -163,6 +166,8 @@@ SUBARCH := $(shell uname -m | sed -e s/
                                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
                                  -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
  
 +SUBARCH := arm
 +
  # Cross compiling and selecting different set of gcc/bin-utils
  # ---------------------------------------------------------------------------
  #
  # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
  
  ARCH          ?= $(SUBARCH)
 -CROSS_COMPILE ?=
 +CROSS_COMPILE ?= arm-linux-
  
  # Architecture as present in compile.h
  UTS_MACHINE := $(ARCH)
index 5dedcb840e93429ca23dbc8bfc1aec7527786191,23348e9561b92070406f4d40a7a5060190561e6e..a8bdecf1af24b256741bb4d29c11803aba913a20
@@@ -247,7 -247,7 +247,7 @@@ not_relocated:     mov     r0, #
                mov     r3, r7
                bl      decompress_kernel
  
-               add     r0, r0, #127
+               add     r0, r0, #127 + 128      @ alignment + stack
                bic     r0, r0, #127            @ align the kernel length
  /*
   * r0     = decompressed kernel length
                stmia   r1!, {r9 - r14}
                cmp     r2, r3
                blo     1b
+               add     sp, r1, #128            @ relocate the stack
  
                bl      cache_clean_flush
                add     pc, r5, r0              @ call relocation code
@@@ -435,28 -436,6 +436,28 @@@ __armv4_mmu_cache_on
                mcr     p15, 0, r0, c8, c7, 0   @ flush I,D TLBs
                mov     pc, r12
  
 +__armv7_mmu_cache_on:
 +              mov     r12, lr
 +              mrc     p15, 0, r11, c0, c1, 4  @ read ID_MMFR0
 +              tst     r11, #0xf               @ VMSA
 +              blne    __setup_mmu
 +              mov     r0, #0
 +              mcr     p15, 0, r0, c7, c10, 4  @ drain write buffer
 +              tst     r11, #0xf               @ VMSA
 +              mcrne   p15, 0, r0, c8, c7, 0   @ flush I,D TLBs
 +              mrc     p15, 0, r0, c1, c0, 0   @ read control reg
 +              orr     r0, r0, #0x5000         @ I-cache enable, RR cache replacement
 +              orr     r0, r0, #0x003c         @ write buffer
 +              orrne   r0, r0, #1              @ MMU enabled
 +              movne   r1, #-1
 +              mcrne   p15, 0, r3, c2, c0, 0   @ load page table pointer
 +              mcrne   p15, 0, r1, c3, c0, 0   @ load domain access control
 +              mcr     p15, 0, r0, c1, c0, 0   @ load control register
 +              mrc     p15, 0, r0, c1, c0, 0   @ and read it back
 +              mov     r0, #0
 +              mcr     p15, 0, r0, c7, c5, 4   @ ISB
 +              mov     pc, r12
 +
  __arm6_mmu_cache_on:
                mov     r12, lr
                bl      __setup_mmu
@@@ -498,6 -477,7 +499,7 @@@ __common_mmu_cache_on
   */
                .align  5
  reloc_start:  add     r9, r5, r0
+               sub     r9, r9, #128            @ do not copy the stack
                debug_reloc_start
                mov     r1, r4
  1:
  
                cmp     r5, r9
                blo     1b
+               add     sp, r1, #128            @ relocate the stack
                debug_reloc_end
  
  call_kernel:  bl      cache_clean_flush
@@@ -641,17 -622,11 +644,17 @@@ proc_types
                b       __armv4_mmu_cache_flush
  
                .word   0x0007b000              @ ARMv6
 -              .word   0x0007f000
 +              .word   0x000ff000
                b       __armv4_mmu_cache_on
                b       __armv4_mmu_cache_off
                b       __armv6_mmu_cache_flush
  
 +              .word   0x000f0000              @ new CPU Id
 +              .word   0x000f0000
 +              b       __armv7_mmu_cache_on
 +              b       __armv7_mmu_cache_off
 +              b       __armv7_mmu_cache_flush
 +
                .word   0                       @ unrecognised type
                .word   0
                mov     pc, lr
@@@ -699,16 -674,6 +702,16 @@@ __armv4_mmu_cache_off
                mcr     p15, 0, r0, c8, c7      @ invalidate whole TLB v4
                mov     pc, lr
  
 +__armv7_mmu_cache_off:
 +              mrc     p15, 0, r0, c1, c0
 +              bic     r0, r0, #0x000d
 +              mcr     p15, 0, r0, c1, c0      @ turn MMU and cache off
 +              mov     r12, lr
 +              bl      __armv7_mmu_cache_flush
 +              mov     r0, #0
 +              mcr     p15, 0, r0, c8, c7, 0   @ invalidate whole TLB
 +              mov     pc, r12
 +
  __arm6_mmu_cache_off:
                mov     r0, #0x00000030         @ ARM6 control reg.
                b       __armv3_mmu_cache_off
@@@ -765,59 -730,6 +768,59 @@@ __armv6_mmu_cache_flush
                mcr     p15, 0, r1, c7, c10, 4  @ drain WB
                mov     pc, lr
  
 +__armv7_mmu_cache_flush:
 +              mrc     p15, 0, r10, c0, c1, 5  @ read ID_MMFR1
 +              tst     r10, #0xf << 16         @ hierarchical cache (ARMv7)
 +              beq     hierarchical
 +              mov     r10, #0
 +              mcr     p15, 0, r10, c7, c14, 0 @ clean+invalidate D
 +              b       iflush
 +hierarchical:
 +              stmfd   sp!, {r0-r5, r7, r9-r11}
 +              mrc     p15, 1, r0, c0, c0, 1   @ read clidr
 +              ands    r3, r0, #0x7000000      @ extract loc from clidr
 +              mov     r3, r3, lsr #23         @ left align loc bit field
 +              beq     finished                @ if loc is 0, then no need to clean
 +              mov     r10, #0                 @ start clean at cache level 0
 +loop1:
 +              add     r2, r10, r10, lsr #1    @ work out 3x current cache level
 +              mov     r1, r0, lsr r2          @ extract cache type bits from clidr
 +              and     r1, r1, #7              @ mask of the bits for current cache only
 +              cmp     r1, #2                  @ see what cache we have at this level
 +              blt     skip                    @ skip if no cache, or just i-cache
 +              mcr     p15, 2, r10, c0, c0, 0  @ select current cache level in cssr
 +              mcr     p15, 0, r10, c7, c5, 4  @ isb to sych the new cssr&csidr
 +              mrc     p15, 1, r1, c0, c0, 0   @ read the new csidr
 +              and     r2, r1, #7              @ extract the length of the cache lines
 +              add     r2, r2, #4              @ add 4 (line length offset)
 +              ldr     r4, =0x3ff
 +              ands    r4, r4, r1, lsr #3      @ find maximum number on the way size
 +              .word   0xe16f5f14              @ clz r5, r4 - find bit position of way size increment
 +              ldr     r7, =0x7fff
 +              ands    r7, r7, r1, lsr #13     @ extract max number of the index size
 +loop2:
 +              mov     r9, r4                  @ create working copy of max way size
 +loop3:
 +              orr     r11, r10, r9, lsl r5    @ factor way and cache number into r11
 +              orr     r11, r11, r7, lsl r2    @ factor index number into r11
 +              mcr     p15, 0, r11, c7, c14, 2 @ clean & invalidate by set/way
 +              subs    r9, r9, #1              @ decrement the way
 +              bge     loop3
 +              subs    r7, r7, #1              @ decrement the index
 +              bge     loop2
 +skip:
 +              add     r10, r10, #2            @ increment cache number
 +              cmp     r3, r10
 +              bgt     loop1
 +finished:
 +              mov     r10, #0                 @ swith back to cache level 0
 +              mcr     p15, 2, r10, c0, c0, 0  @ select current cache level in cssr
 +              ldmfd   sp!, {r0-r5, r7, r9-r11}
 +iflush:
 +              mcr     p15, 0, r10, c7, c5, 0  @ invalidate I+BTB
 +              mcr     p15, 0, r10, c7, c10, 4 @ drain WB
 +              mov     pc, lr
 +
  __armv4_mmu_cache_flush:
                mov     r2, #64*1024            @ default: 32K dcache size (*2)
                mov     r11, #32                @ default: 32 byte line size
diff --combined arch/arm/vfp/vfpmodule.c
index 3fb644746a00b68126f4203c444a50935f36ab96,1106b5f9cf197bffda116df9562511374ffd7bd9..ef08da6f8898ee091ff3f6964626374c048dcf5b
@@@ -26,8 -26,9 +26,9 @@@
   */
  void vfp_testing_entry(void);
  void vfp_support_entry(void);
+ void vfp_null_entry(void);
  
- void (*vfp_vector)(void) = vfp_testing_entry;
+ void (*vfp_vector)(void) = vfp_null_entry;
  union vfp_state *last_VFP_context[NR_CPUS];
  
  /*
@@@ -124,13 -125,13 +125,13 @@@ void vfp_raise_sigfpe(unsigned int sico
        send_sig_info(SIGFPE, &info, current);
  }
  
 -static void vfp_panic(char *reason)
 +static void vfp_panic(char *reason, u32 inst)
  {
        int i;
  
        printk(KERN_ERR "VFP: Error: %s\n", reason);
        printk(KERN_ERR "VFP: EXC 0x%08x SCR 0x%08x INST 0x%08x\n",
 -              fmrx(FPEXC), fmrx(FPSCR), fmrx(FPINST));
 +              fmrx(FPEXC), fmrx(FPSCR), inst);
        for (i = 0; i < 32; i += 2)
                printk(KERN_ERR "VFP: s%2u: 0x%08x s%2u: 0x%08x\n",
                       i, vfp_get_float(i), i+1, vfp_get_float(i+1));
@@@ -146,7 -147,7 +147,7 @@@ static void vfp_raise_exceptions(u32 ex
        pr_debug("VFP: raising exceptions %08x\n", exceptions);
  
        if (exceptions == VFP_EXCEPTION_ERROR) {
 -              vfp_panic("unhandled bounce");
 +              vfp_panic("unhandled bounce", inst);
                vfp_raise_sigfpe(0, regs);
                return;
        }
@@@ -261,16 -262,11 +262,16 @@@ void VFP9_bounce(u32 trigger, u32 fpexc
         * FPEXC bounce reason, but this appears to be unreliable.
         * Emulate the bounced instruction instead.
         */
 +#ifndef CONFIG_VFPv3
        inst = fmrx(FPINST);
 +#else
 +      inst = trigger;
 +#endif
        exceptions = vfp_emulate_instruction(inst, fpscr, regs);
        if (exceptions)
                vfp_raise_exceptions(exceptions, inst, orig_fpscr, regs);
  
 +#ifndef CONFIG_VFPv3
        /*
         * If there isn't a second FP instruction, exit now.
         */
        barrier();
        trigger = fmrx(FPINST2);
        orig_fpscr = fpscr = fmrx(FPSCR);
 +#else
 +      return;
 +#endif
  
   emulate:
        exceptions = vfp_emulate_instruction(trigger, fpscr, regs);
@@@ -329,8 -322,10 +330,10 @@@ static int __init vfp_init(void
         * The handler is already setup to just log calls, so
         * we just need to read the VFPSID register.
         */
+       vfp_vector = vfp_testing_entry;
        vfpsid = fmrx(FPSID);
        barrier();
+       vfp_vector = vfp_null_entry;
  
        printk(KERN_INFO "VFP support v0.3: ");
        if (VFP_arch) {
index bc56f1ab700185194659cac8652a4b54571b6466,4cca55170e21f78f9425fff3d829cffe8d575bb1..2f43d7aeebee49b865156b53a3e568f8c7afa7bd
@@@ -347,7 -347,7 +347,7 @@@ endmenu # encoder / decoder chip
  
  config VIDEO_VIVI
        tristate "Virtual Video Driver"
-       depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 && PCI
+       depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 && PCI && VIDEO_DEV
        select VIDEO_BUF
        default n
        ---help---
@@@ -654,8 -654,6 +654,8 @@@ source "drivers/media/video/cx88/Kconfi
  
  source "drivers/media/video/ivtv/Kconfig"
  
 +source drivers/media/video/omap/Kconfig
 +
  config VIDEO_M32R_AR
        tristate "AR devices"
        depends on M32R && VIDEO_V4L1
diff --combined drivers/mmc/host/omap.c
index 383bd54b34b524a77c8c9355affae3f5faa72c9d,b0824a38f42542602b5471fd8c4e0a6c986caf16..b6a55e12a80ba226361dc2f6475e2571a74ca0fe
@@@ -21,7 -21,6 +21,7 @@@
  #include <linux/delay.h>
  #include <linux/spinlock.h>
  #include <linux/timer.h>
 +#include <linux/mmc/mmc.h>
  #include <linux/mmc/host.h>
  #include <linux/mmc/card.h>
  #include <linux/clk.h>
@@@ -37,7 -36,6 +37,7 @@@
  #include <asm/arch/mux.h>
  #include <asm/arch/fpga.h>
  #include <asm/arch/tps65010.h>
 +#include <asm/arch/board-sx1.h>
  
  #define       OMAP_MMC_REG_CMD        0x00
  #define       OMAP_MMC_REG_ARGL       0x04
@@@ -524,28 -522,10 +524,10 @@@ static irqreturn_t mmc_omap_irq(int irq
                }
  
                if (status & OMAP_MMC_STAT_CARD_ERR) {
-                       if (host->cmd && host->cmd->opcode == MMC_STOP_TRANSMISSION) {
-                               u32 response = OMAP_MMC_READ(host, RSP6)
-                                       | (OMAP_MMC_READ(host, RSP7) << 16);
-                               /* STOP sometimes sets must-ignore bits */
-                               if (!(response & (R1_CC_ERROR
-                                                               | R1_ILLEGAL_COMMAND
-                                                               | R1_COM_CRC_ERROR))) {
-                                       end_command = 1;
-                                       continue;
-                               }
-                       }
-                       dev_dbg(mmc_dev(host->mmc), "card status error (CMD%d)\n",
+                       dev_dbg(mmc_dev(host->mmc),
+                               "ignoring card status error (CMD%d)\n",
                                host->cmd->opcode);
-                       if (host->cmd) {
-                               host->cmd->error = MMC_ERR_FAILED;
-                               end_command = 1;
-                       }
-                       if (host->data) {
-                               host->data->error = MMC_ERR_FAILED;
-                               transfer_error = 1;
-                       }
+                       end_command = 1;
                }
  
                /*
@@@ -588,8 -568,9 +570,8 @@@ static void mmc_omap_switch_timer(unsig
  static void mmc_omap_switch_handler(struct work_struct *work)
  {
        struct mmc_omap_host *host = container_of(work, struct mmc_omap_host, switch_work);
 -      struct mmc_card *card;
        static int complained = 0;
 -      int cards = 0, cover_open;
 +      int cover_open;
  
        if (host->switch_pin == -1)
                return;
                host->switch_last_state = cover_open;
        }
        mmc_detect_change(host->mmc, 0);
 -      list_for_each_entry(card, &host->mmc->cards, node) {
 -              if (mmc_card_present(card))
 -                      cards++;
 -      }
        if (mmc_omap_cover_is_open(host)) {
                if (!complained) {
                        dev_info(mmc_dev(host->mmc), "cover is open\n");
@@@ -903,9 -888,7 +885,9 @@@ static void innovator_fpga_socket_power
   */
  static void mmc_omap_power(struct mmc_omap_host *host, int on)
  {
 -      if (on) {
 +      if (machine_is_sx1())
 +              sx1_setmmcpower(on);
 +      else if (on) {
                if (machine_is_omap_innovator())
                        innovator_fpga_socket_power(1);
                else if (machine_is_omap_h2())
index 15772541c0ecefe9ed51825ae6aaf3a787c8b674,c4975a6cf7774cc32fcd0ff3500462694b2c0f7b..56ebbb4446123dca4a962ab79395d93395a43188
@@@ -1651,9 -1651,9 +1651,9 @@@ static void ep0_irq(struct omap_udc *ud
                        UDC_EP_NUM_REG = 0;
                } while (UDC_IRQ_SRC_REG & UDC_SETUP);
  
- #define       w_value         le16_to_cpup (&u.r.wValue)
- #define       w_index         le16_to_cpup (&u.r.wIndex)
- #define       w_length        le16_to_cpup (&u.r.wLength)
+ #define       w_value         le16_to_cpu(u.r.wValue)
+ #define       w_index         le16_to_cpu(u.r.wIndex)
+ #define       w_length        le16_to_cpu(u.r.wLength)
  
                /* Delegate almost all control requests to the gadget driver,
                 * except for a handful of ch9 status/feature requests that
@@@ -2662,9 -2662,7 +2662,9 @@@ omap_ep_setup(char *name, u8 addr, u8 t
                 * and ignored for PIO-IN on newer chips
                 * (for more reliable behavior)
                 */
 -              if (!use_dma || cpu_is_omap15xx() || cpu_is_omap24xx())
 +              if ((!use_dma && (addr & USB_DIR_IN))
 +                              || machine_is_omap_apollon()
 +                              || cpu_is_omap15xx())
                        dbuf = 0;
  
                switch (maxp) {