Merge branch 'next' of git://git.secretlab.ca/git/linux-2.6
Linus Torvalds [Wed, 16 Dec 2009 21:26:53 +0000 (13:26 -0800)]
* 'next' of git://git.secretlab.ca/git/linux-2.6: (23 commits)
  powerpc: fix up for mmu_mapin_ram api change
  powerpc: wii: allow ioremap within the memory hole
  powerpc: allow ioremap within reserved memory regions
  wii: use both mem1 and mem2 as ram
  wii: bootwrapper: add fixup to calc useable mem2
  powerpc: gamecube/wii: early debugging using usbgecko
  powerpc: reserve fixmap entries for early debug
  powerpc: wii: default config
  powerpc: wii: platform support
  powerpc: wii: hollywood interrupt controller support
  powerpc: broadway processor support
  powerpc: wii: bootwrapper bits
  powerpc: wii: device tree
  powerpc: gamecube: default config
  powerpc: gamecube: platform support
  powerpc: gamecube/wii: flipper interrupt controller support
  powerpc: gamecube/wii: udbg support for usbgecko
  powerpc: gamecube/wii: do not include PCI support
  powerpc: gamecube/wii: declare as non-coherent platforms
  powerpc: gamecube/wii: introduce GAMECUBE_COMMON
  ...

Fix up conflicts in arch/powerpc/mm/fsl_booke_mmu.c.

Hopefully even close to correctly.

1  2 
arch/powerpc/Kconfig
arch/powerpc/Kconfig.debug
arch/powerpc/mm/fsl_booke_mmu.c
arch/powerpc/mm/mmu_decl.h
arch/powerpc/platforms/Kconfig.cputype

Simple merge
Simple merge
@@@ -172,44 -148,27 +172,44 @@@ static void settlbcam(int index, unsign
        loadcam_entry(index);
  }
  
 -void invalidate_tlbcam_entry(int index)
 -{
 -      TLBCAM[index].MAS0 = MAS0_TLBSEL(1) | MAS0_ESEL(index);
 -      TLBCAM[index].MAS1 = ~MAS1_VALID;
 -
 -      loadcam_entry(index);
 -}
 -
 -unsigned long __init mmu_mapin_ram(unsigned long top)
 +unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx)
  {
 +      int i;
        unsigned long virt = PAGE_OFFSET;
        phys_addr_t phys = memstart_addr;
 +      unsigned long amount_mapped = 0;
 +      unsigned long max_cam = (mfspr(SPRN_TLB1CFG) >> 16) & 0xf;
 +
 +      /* Convert (4^max) kB to (2^max) bytes */
 +      max_cam = max_cam * 2 + 10;
  
 -      while (tlbcam_index < ARRAY_SIZE(cam) && cam[tlbcam_index]) {
 -              settlbcam(tlbcam_index, virt, phys, cam[tlbcam_index], PAGE_KERNEL_X, 0);
 -              virt += cam[tlbcam_index];
 -              phys += cam[tlbcam_index];
 -              tlbcam_index++;
 +      /* Calculate CAM values */
 +      for (i = 0; ram && i < max_cam_idx; i++) {
 +              unsigned int camsize = __ilog2(ram) & ~1U;
 +              unsigned int align = __ffs(virt | phys) & ~1U;
 +              unsigned long cam_sz;
 +
 +              if (camsize > align)
 +                      camsize = align;
 +              if (camsize > max_cam)
 +                      camsize = max_cam;
 +
 +              cam_sz = 1UL << camsize;
 +              settlbcam(i, virt, phys, cam_sz, PAGE_KERNEL_X, 0);
 +
 +              ram -= cam_sz;
 +              amount_mapped += cam_sz;
 +              virt += cam_sz;
 +              phys += cam_sz;
        }
 +      tlbcam_index = i;
 +
 +      return amount_mapped;
 +}
  
- unsigned long __init mmu_mapin_ram(void)
 -      return virt - PAGE_OFFSET;
++unsigned long __init mmu_mapin_ram(unsigned long top)
 +{
 +      return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1;
  }
  
  /*
@@@ -102,8 -110,12 +102,9 @@@ extern void mapin_ram(void)
  extern int map_page(unsigned long va, phys_addr_t pa, int flags);
  extern void setbat(int index, unsigned long virt, phys_addr_t phys,
                   unsigned int size, int flags);
 -extern void settlbcam(int index, unsigned long virt, phys_addr_t phys,
 -                    unsigned int size, int flags, unsigned int pid);
 -extern void invalidate_tlbcam_entry(int index);
  
  extern int __map_without_bats;
+ extern int __allow_ioremap_reserved;
  extern unsigned long ioremap_base;
  extern unsigned int rtas_data, rtas_size;