Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Oct 2010 14:51:49 +0000 (07:51 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 25 Oct 2010 14:51:49 +0000 (07:51 -0700)
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (110 commits)
  sh: i2c-sh7760: Replase from ctrl_* to __raw_*
  sh: clkfwk: Shuffle around to match the intc split up.
  sh: clkfwk: modify for_each_frequency end condition
  sh: fix clk_get() error handling
  sh: clkfwk: Fix fault in frequency iterator.
  sh: clkfwk: Add a helper for rate rounding by divisor ranges.
  sh: clkfwk: Abstract rate rounding helper.
  sh: clkfwk: support clock remapping.
  sh: pci: Convert to upper/lower_32_bits() helpers.
  sh: mach-sdk7786: Add support for the FPGA SRAM.
  sh: Provide a generic SRAM pool for tiny memories.
  sh: pci: Support secondary FPGA-driven PCIe clocks on SDK7786.
  sh: pci: Support slot 4 routing on SDK7786.
  sh: Fix up PMB locking.
  sh: mach-sdk7786: Add support for fpga gpios.
  sh: use pr_fmt for clock framework, too.
  sh: remove name and id from struct clk
  sh: free-without-alloc fix for sh_mobile_lcdcfb
  sh: perf: Set up perf_max_events.
  sh: perf: Support SH-X3 hardware counters.
  ...

Fix up trivial conflicts (perf_max_events got removed) in arch/sh/kernel/perf_event.c

1  2 
arch/sh/Kconfig
arch/sh/kernel/irq.c
arch/sh/mm/init.c
drivers/Makefile
include/linux/pci_ids.h

diff --combined arch/sh/Kconfig
@@@ -16,7 -16,6 +16,7 @@@ config SUPER
        select HAVE_ARCH_TRACEHOOK
        select HAVE_DMA_API_DEBUG
        select HAVE_DMA_ATTRS
 +      select HAVE_IRQ_WORK
        select HAVE_PERF_EVENTS
        select PERF_USE_VMALLOC
        select HAVE_KERNEL_GZIP
@@@ -24,6 -23,7 +24,7 @@@
        select HAVE_KERNEL_LZMA
        select HAVE_KERNEL_LZO
        select HAVE_SYSCALL_TRACEPOINTS
+       select HAVE_REGS_AND_STACK_ACCESS_API
        select RTC_LIB
        select GENERIC_ATOMIC64
        help
@@@ -46,7 -46,7 +47,7 @@@ config SUPERH3
        select HAVE_ARCH_KGDB
        select HAVE_HW_BREAKPOINT
        select HAVE_MIXED_BREAKPOINTS_REGS
-       select PERF_EVENTS if HAVE_HW_BREAKPOINT
+       select PERF_EVENTS
        select ARCH_HIBERNATION_POSSIBLE if MMU
  
  config SUPERH64
@@@ -250,11 -250,6 +251,11 @@@ config ARCH_SHMOBIL
        select PM
        select PM_RUNTIME
  
 +config CPU_HAS_PMU
 +       depends on CPU_SH4 || CPU_SH4A
 +       default y
 +       bool
 +
  if SUPERH32
  
  choice
@@@ -471,6 -466,7 +472,7 @@@ config CPU_SUBTYPE_SHX
        select CPU_SH4A
        select CPU_SHX3
        select GENERIC_CLOCKEVENTS_BROADCAST if SMP
+       select ARCH_REQUIRE_GPIOLIB
  
  # SH4AL-DSP Processor Support
  
@@@ -575,7 -571,7 +577,7 @@@ config SH_CLK_CP
  config SH_CLK_CPG_LEGACY
        depends on SH_CLK_CPG
        def_bool y if !CPU_SUBTYPE_SH7785 && !ARCH_SHMOBILE && \
-                     !CPU_SUBTYPE_SH7786
+                     !CPU_SHX3 && !CPU_SUBTYPE_SH7757
  
  config SH_CLK_MD
        int "CPU Mode Pin Setting"
@@@ -744,14 -740,6 +746,14 @@@ config GUSA_R
          LLSC, this should be more efficient than the other alternative of
          disabling interrupts around the atomic sequence.
  
 +config HW_PERF_EVENTS
 +      bool "Enable hardware performance counter support for perf events"
 +      depends on PERF_EVENTS && CPU_HAS_PMU
 +      default y
 +      help
 +        Enable hardware performance counter support for perf events. If
 +        disabled, perf events will use software events only.
 +
  source "drivers/sh/Kconfig"
  
  endmenu
diff --combined arch/sh/kernel/irq.c
@@@ -283,6 -283,8 +283,8 @@@ void __init init_IRQ(void
        if (sh_mv.mv_init_irq)
                sh_mv.mv_init_irq();
  
+       intc_finalize();
        irq_ctx_init(smp_processor_id());
  }
  
  int __init arch_probe_nr_irqs(void)
  {
        nr_irqs = sh_mv.mv_nr_irqs;
 -      return 0;
 +      return NR_IRQS_LEGACY;
  }
  #endif
  
diff --combined arch/sh/mm/init.c
@@@ -47,7 -47,6 +47,6 @@@ static pte_t *__get_pte_phys(unsigned l
        pgd_t *pgd;
        pud_t *pud;
        pmd_t *pmd;
-       pte_t *pte;
  
        pgd = pgd_offset_k(addr);
        if (pgd_none(*pgd)) {
@@@ -67,8 -66,7 +66,7 @@@
                return NULL;
        }
  
-       pte = pte_offset_kernel(pmd, addr);
-       return pte;
+       return pte_offset_kernel(pmd, addr);
  }
  
  static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
@@@ -125,13 -123,45 +123,45 @@@ void __clear_fixmap(enum fixed_addresse
        clear_pte_phys(address, prot);
  }
  
+ static pmd_t * __init one_md_table_init(pud_t *pud)
+ {
+       if (pud_none(*pud)) {
+               pmd_t *pmd;
+               pmd = alloc_bootmem_pages(PAGE_SIZE);
+               pud_populate(&init_mm, pud, pmd);
+               BUG_ON(pmd != pmd_offset(pud, 0));
+       }
+       return pmd_offset(pud, 0);
+ }
+ static pte_t * __init one_page_table_init(pmd_t *pmd)
+ {
+       if (pmd_none(*pmd)) {
+               pte_t *pte;
+               pte = alloc_bootmem_pages(PAGE_SIZE);
+               pmd_populate_kernel(&init_mm, pmd, pte);
+               BUG_ON(pte != pte_offset_kernel(pmd, 0));
+       }
+       return pte_offset_kernel(pmd, 0);
+ }
+ static pte_t * __init page_table_kmap_check(pte_t *pte, pmd_t *pmd,
+                                           unsigned long vaddr, pte_t *lastpte)
+ {
+       return pte;
+ }
  void __init page_table_range_init(unsigned long start, unsigned long end,
                                         pgd_t *pgd_base)
  {
        pgd_t *pgd;
        pud_t *pud;
        pmd_t *pmd;
-       pte_t *pte;
+       pte_t *pte = NULL;
        int i, j, k;
        unsigned long vaddr;
  
        for ( ; (i < PTRS_PER_PGD) && (vaddr != end); pgd++, i++) {
                pud = (pud_t *)pgd;
                for ( ; (j < PTRS_PER_PUD) && (vaddr != end); pud++, j++) {
- #ifdef __PAGETABLE_PMD_FOLDED
-                       pmd = (pmd_t *)pud;
- #else
-                       pmd = (pmd_t *)alloc_bootmem_low_pages(PAGE_SIZE);
-                       pud_populate(&init_mm, pud, pmd);
+                       pmd = one_md_table_init(pud);
+ #ifndef __PAGETABLE_PMD_FOLDED
                        pmd += k;
  #endif
                        for (; (k < PTRS_PER_PMD) && (vaddr != end); pmd++, k++) {
-                               if (pmd_none(*pmd)) {
-                                       pte = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE);
-                                       pmd_populate_kernel(&init_mm, pmd, pte);
-                                       BUG_ON(pte != pte_offset_kernel(pmd, 0));
-                               }
+                               pte = page_table_kmap_check(one_page_table_init(pmd),
+                                                           pmd, vaddr, pte);
                                vaddr += PMD_SIZE;
                        }
                        k = 0;
@@@ -200,6 -224,7 +224,6 @@@ static void __init bootmem_init_one_nod
        unsigned long total_pages, paddr;
        unsigned long end_pfn;
        struct pglist_data *p;
 -      int i;
  
        p = NODE_DATA(nid);
  
         * reservations in other nodes.
         */
        if (nid == 0) {
 +              struct memblock_region *reg;
 +
                /* Reserve the sections we're already using. */
 -              for (i = 0; i < memblock.reserved.cnt; i++)
 -                      reserve_bootmem(memblock.reserved.region[i].base,
 -                                      memblock_size_bytes(&memblock.reserved, i),
 -                                      BOOTMEM_DEFAULT);
 +              for_each_memblock(reserved, reg) {
 +                      reserve_bootmem(reg->base, reg->size, BOOTMEM_DEFAULT);
 +              }
        }
  
        sparse_memory_present_with_active_regions(nid);
  
  static void __init do_init_bootmem(void)
  {
 +      struct memblock_region *reg;
        int i;
  
        /* Add active regions with valid PFNs. */
 -      for (i = 0; i < memblock.memory.cnt; i++) {
 +      for_each_memblock(memory, reg) {
                unsigned long start_pfn, end_pfn;
 -              start_pfn = memblock.memory.region[i].base >> PAGE_SHIFT;
 -              end_pfn = start_pfn + memblock_size_pages(&memblock.memory, i);
 +              start_pfn = memblock_region_memory_base_pfn(reg);
 +              end_pfn = memblock_region_memory_end_pfn(reg);
                __add_active_range(0, start_pfn, end_pfn);
        }
  
diff --combined drivers/Makefile
@@@ -50,7 -50,7 +50,7 @@@ obj-$(CONFIG_SPI)             += spi
  obj-y                         += net/
  obj-$(CONFIG_ATM)             += atm/
  obj-$(CONFIG_FUSION)          += message/
 -obj-$(CONFIG_FIREWIRE)                += firewire/
 +obj-y                         += firewire/
  obj-y                         += ieee1394/
  obj-$(CONFIG_UIO)             += uio/
  obj-y                         += cdrom/
@@@ -92,6 -92,7 +92,7 @@@ obj-$(CONFIG_EISA)            += eisa
  obj-y                         += lguest/
  obj-$(CONFIG_CPU_FREQ)                += cpufreq/
  obj-$(CONFIG_CPU_IDLE)                += cpuidle/
+ obj-$(CONFIG_DMA_ENGINE)      += dma/
  obj-$(CONFIG_MMC)             += mmc/
  obj-$(CONFIG_MEMSTICK)                += memstick/
  obj-$(CONFIG_NEW_LEDS)                += leds/
@@@ -104,7 -105,6 +105,6 @@@ obj-$(CONFIG_ARCH_SHMOBILE)        += sh
  ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
  obj-y                         += clocksource/
  endif
- obj-$(CONFIG_DMA_ENGINE)      += dma/
  obj-$(CONFIG_DCA)             += dca/
  obj-$(CONFIG_HID)             += hid/
  obj-$(CONFIG_PPC_PS3)         += ps3/
diff --combined include/linux/pci_ids.h
  #define PCI_DEVICE_ID_VLSI_82C147     0x0105
  #define PCI_DEVICE_ID_VLSI_VAS96011   0x0702
  
 +/* AMD RD890 Chipset */
 +#define PCI_DEVICE_ID_RD890_IOMMU     0x5a23
 +
  #define PCI_VENDOR_ID_ADL             0x1005
  #define PCI_DEVICE_ID_ADL_2301                0x2301
  
  #define PCI_DEVICE_ID_AMD_11H_NB_DRAM 0x1302
  #define PCI_DEVICE_ID_AMD_11H_NB_MISC 0x1303
  #define PCI_DEVICE_ID_AMD_11H_NB_LINK 0x1304
 +#define PCI_DEVICE_ID_AMD_15H_NB_MISC 0x1603
  #define PCI_DEVICE_ID_AMD_LANCE               0x2000
  #define PCI_DEVICE_ID_AMD_LANCE_HOME  0x2001
  #define PCI_DEVICE_ID_AMD_SCSI                0x2020
  #define PCI_DEVICE_ID_HP_CISSC                0x3230
  #define PCI_DEVICE_ID_HP_CISSD                0x3238
  #define PCI_DEVICE_ID_HP_CISSE                0x323a
 +#define PCI_DEVICE_ID_HP_CISSF                0x323b
  #define PCI_DEVICE_ID_HP_ZX2_IOC      0x4031
  
  #define PCI_VENDOR_ID_PCTECH          0x1042
  
  #define PCI_VENDOR_ID_ANIGMA          0x1051
  #define PCI_DEVICE_ID_ANIGMA_MC145575 0x0100
 -  
 +
  #define PCI_VENDOR_ID_EFAR            0x1055
  #define PCI_DEVICE_ID_EFAR_SLC90E66_1 0x9130
  #define PCI_DEVICE_ID_EFAR_SLC90E66_3 0x9463
  
  #define PCI_VENDOR_ID_ZIATECH         0x1138
  #define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550
 - 
 +
  
  #define PCI_VENDOR_ID_SYSKONNECT      0x1148
  #define PCI_DEVICE_ID_SYSKONNECT_TR   0x4200
  #define PCI_DEVICE_ID_RP8OCTA         0x0005
  #define PCI_DEVICE_ID_RP8J            0x0006
  #define PCI_DEVICE_ID_RP4J            0x0007
 -#define PCI_DEVICE_ID_RP8SNI          0x0008  
 -#define PCI_DEVICE_ID_RP16SNI         0x0009  
 +#define PCI_DEVICE_ID_RP8SNI          0x0008
 +#define PCI_DEVICE_ID_RP16SNI         0x0009
  #define PCI_DEVICE_ID_RPP4            0x000A
  #define PCI_DEVICE_ID_RPP8            0x000B
  #define PCI_DEVICE_ID_RP4M            0x000D
  #define PCI_DEVICE_ID_URP8INTF                0x0802
  #define PCI_DEVICE_ID_URP16INTF               0x0803
  #define PCI_DEVICE_ID_URP8OCTA                0x0805
 -#define PCI_DEVICE_ID_UPCI_RM3_8PORT  0x080C       
 +#define PCI_DEVICE_ID_UPCI_RM3_8PORT  0x080C
  #define PCI_DEVICE_ID_UPCI_RM3_4PORT  0x080D
 -#define PCI_DEVICE_ID_CRP16INTF               0x0903       
 +#define PCI_DEVICE_ID_CRP16INTF               0x0903
  
  #define PCI_VENDOR_ID_CYCLADES                0x120e
  #define PCI_DEVICE_ID_CYCLOM_Y_Lo     0x0100
  #define PCI_DEVICE_ID_RASTEL_2PORT    0x2000
  
  #define PCI_VENDOR_ID_ZOLTRIX         0x15b0
 -#define PCI_DEVICE_ID_ZOLTRIX_2BD0    0x2bd0 
 +#define PCI_DEVICE_ID_ZOLTRIX_2BD0    0x2bd0
  
  #define PCI_VENDOR_ID_MELLANOX                0x15b3
  #define PCI_DEVICE_ID_MELLANOX_TAVOR  0x5a44
  #define PCI_VENDOR_ID_ARIMA           0x161f
  
  #define PCI_VENDOR_ID_BROCADE         0x1657
 +#define PCI_DEVICE_ID_BROCADE_CT      0x0014
 +#define PCI_DEVICE_ID_BROCADE_FC_8G1P 0x0017
 +#define PCI_DEVICE_ID_BROCADE_CT_FC   0x0021
  
  #define PCI_VENDOR_ID_SIBYTE          0x166d
  #define PCI_DEVICE_ID_BCM1250_PCI     0x0001
  
  #define PCI_VENDOR_ID_SILAN           0x1904
  
+ #define PCI_VENDOR_ID_RENESAS         0x1912
+ #define PCI_DEVICE_ID_RENESAS_SH7781  0x0001
+ #define PCI_DEVICE_ID_RENESAS_SH7780  0x0002
+ #define PCI_DEVICE_ID_RENESAS_SH7763  0x0004
+ #define PCI_DEVICE_ID_RENESAS_SH7785  0x0007
+ #define PCI_DEVICE_ID_RENESAS_SH7786  0x0010
  #define PCI_VENDOR_ID_TDI               0x192E
  #define PCI_DEVICE_ID_TDI_EHCI          0x0101
  
  #define PCI_DEVICE_ID_P2010           0x0079
  #define PCI_DEVICE_ID_P1020E          0x0100
  #define PCI_DEVICE_ID_P1020           0x0101
 +#define PCI_DEVICE_ID_P1021E          0x0102
 +#define PCI_DEVICE_ID_P1021           0x0103
  #define PCI_DEVICE_ID_P1011E          0x0108
  #define PCI_DEVICE_ID_P1011           0x0109
  #define PCI_DEVICE_ID_P1022E          0x0110
  #define PCI_DEVICE_ID_P4080           0x0401
  #define PCI_DEVICE_ID_P4040E          0x0408
  #define PCI_DEVICE_ID_P4040           0x0409
 +#define PCI_DEVICE_ID_P2040E          0x0410
 +#define PCI_DEVICE_ID_P2040           0x0411
 +#define PCI_DEVICE_ID_P3041E          0x041E
 +#define PCI_DEVICE_ID_P3041           0x041F
 +#define PCI_DEVICE_ID_P5020E          0x0420
 +#define PCI_DEVICE_ID_P5020           0x0421
 +#define PCI_DEVICE_ID_P5010E          0x0428
 +#define PCI_DEVICE_ID_P5010           0x0429
  #define PCI_DEVICE_ID_MPC8641         0x7010
  #define PCI_DEVICE_ID_MPC8641D                0x7011
  #define PCI_DEVICE_ID_MPC8610         0x7018
  #define PCI_DEVICE_ID_INTEL_82815_MC  0x1130
  #define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132
  #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221
 -#define PCI_DEVICE_ID_INTEL_7505_0    0x2550  
 +#define PCI_DEVICE_ID_INTEL_7505_0    0x2550
  #define PCI_DEVICE_ID_INTEL_7205_0    0x255d
  #define PCI_DEVICE_ID_INTEL_82437     0x122d
  #define PCI_DEVICE_ID_INTEL_82371FB_0 0x122e
  #define PCI_DEVICE_ID_INTEL_MCH_PC    0x3599
  #define PCI_DEVICE_ID_INTEL_MCH_PC1   0x359a
  #define PCI_DEVICE_ID_INTEL_E7525_MCH 0x359e
 +#define PCI_DEVICE_ID_INTEL_I7300_MCH_ERR 0x360c
 +#define PCI_DEVICE_ID_INTEL_I7300_MCH_FB0 0x360f
 +#define PCI_DEVICE_ID_INTEL_I7300_MCH_FB1 0x3610
  #define PCI_DEVICE_ID_INTEL_IOAT_CNB  0x360b
  #define PCI_DEVICE_ID_INTEL_FBD_CNB   0x360c
  #define PCI_DEVICE_ID_INTEL_IOAT_JSF0 0x3710