1. 27 1月, 2010 1 次提交
    • P
      sh: Optimize runtime disabling of trapped I/O. · 08b36c4a
      Paul Mundt 提交于
      Presently trapped I/O is only registered if it's not explicitly disabled
      for the platforms that select it openly. From the fault path this runs
      through an address lookup before figuring out that nothing matches and
      falls back through the error path, but we can forego the lookup
      completely by testing if it's been explicitly disabled. This provides a
      measurable speedup for things like qemu that rely on runtime disabling.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      08b36c4a
  2. 26 1月, 2010 2 次提交
  3. 21 1月, 2010 5 次提交
    • P
      sh: Conserve fixmap slots when IOREMAP_FIXED=n. · a077e916
      Paul Mundt 提交于
      Presently the IOREMAP_FIXED fixmaps are always defined, even if the
      platform isn't capable of supporting it. Since we already have an ifdef
      for it, ifdef the entries, too.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      a077e916
    • P
      sh: Kill off the special uncached section and fixmap. · 2dc2f8e0
      Paul Mundt 提交于
      Now that cached_to_uncached works as advertized in 32-bit mode and we're
      never going to be able to map < 16MB anyways, there's no need for the
      special uncached section. Kill it off.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      2dc2f8e0
    • P
      sh: Track the uncached mapping size. · 3125ee72
      Paul Mundt 提交于
      This provides a variable for tracking the uncached mapping size, and uses
      it for pretty printing the uncached lowmem range. Beyond this, we'll also
      be building on top of this for figuring out from where the remainder of
      P2 becomes usable when constructing unrelated mappings.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      3125ee72
    • P
      sh: Rework P2 to only include kernel text. · 2023b843
      Paul Mundt 提交于
      This effectively neutralizes P2 by getting rid of P1 identity mapping
      for all available memory and instead only establishes a single unbuffered
      PMB entry (16MB -- the smallest available) that covers the kernel.
      
      As using segmentation for abusing caching attributes in drivers is no
      longer supported (and there are no drivers that can be enabled in 32-bit
      mode that do this), this provides us with all of the uncached access
      needs by the kernel itself.
      
      Drivers and their ilk need to specify their caching attributes when
      remapping through page tables, as usual.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      2023b843
    • P
      sh: initial PMB mapping iteration by helper macro. · 77c2019f
      Paul Mundt 提交于
      All of the cached/uncached mapping setup is duplicated for each size, and
      also misses out on the 16MB case. Rather than duplicating the same iter
      code for that we just consolidate it in to a helper macro that builds an
      iter for each size. The 16MB case is then trivially bolted on at the end.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      77c2019f
  4. 20 1月, 2010 11 次提交
    • P
      sh: pretty print virtual memory map on boot. · 35f99c0d
      Paul Mundt 提交于
      This cribs the pretty printing from arch/x86/mm/init_32.c to dump the
      virtual memory layout on boot. This is primarily intended as a debugging
      aid, given that the newer CPUs have full control over their address space
      and as such have little to nothing in common with the legacy layout.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      35f99c0d
    • P
      sh: mach-sdk7786: Probe system FPGA area mapping. · d9116d07
      Paul Mundt 提交于
      This implements dynamic probing for the system FPGA. The system reset
      controller contains a fixed magic read word in order to identify the
      FPGA. This just utilizes a simple loop that scans across all of the fixed
      physical areas (area 0 through area 6) to locate the FPGA.
      
      The FPGA also contains register information detailing the area mappings
      and chip select settings for all of the other blocks, so this needs to be
      done before we can set up anything else.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      d9116d07
    • P
      sh: Correct iounmap fixmap teardown. · 920efaab
      Paul Mundt 提交于
      iounmap_fixed() had a couple of bugs in it that caused it to effectively
      fail at life. The total number of pages to unmap factored in the mapping
      offset and aligned up to the next page boundary, which doesn't match the
      ioremap_fixed() behaviour.
      
      When ioremap_fixed() pegs a slot, the address in the mapping data already
      contains the offset displacement, and the size is recorded verbatim given
      that we're only interested in total number of pages required. As such, we
      need to calculate the total number from the original size in the unmap
      path as well.
      
      At the same time, there was also an off-by-1 problem in the fixmap index
      calculation which has also been corrected.
      
      Previously subsequent remaps of an identical fixmap index would trigger
      the pte_ERROR() in set_pte_phys():
      
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      	arch/sh/mm/init.c:77: bad pte 8053ffb0(0000781003fff506).
      
      With this patch in place, the iounmap-driven fixmap teardown actually
      does what it's supposed to do.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      920efaab
    • P
      sh: mach-sdk7786: reset controller reboot support. · b51989b8
      Paul Mundt 提交于
      This wires up the machine_ops reboot call to use the system reset
      controller.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      b51989b8
    • P
      sh: machine_ops based reboot support. · fbb82b03
      Paul Mundt 提交于
      This provides a machine_ops-based reboot interface loosely cloned from
      x86, and converts the native sh32 and sh64 cases over to it.
      
      Necessary both for tying in SMP support and also enabling platforms like
      SDK7786 to add support for their microcontroller-based power managers.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      fbb82b03
    • P
      sh: Make 29/32-bit mode check helper generally available. · 2efa53b2
      Paul Mundt 提交于
      Presently __in_29bit_mode() is only defined for the PMB case, but
      it's also easily derived from the CONFIG_29BIT and CONFIG_32BIT &&
      CONFIG_PMB=n cases.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      2efa53b2
    • P
      sh: mach-sdk7786: Split out FPGA IRQ controller setup. · 5f240718
      Paul Mundt 提交于
      This moves out the FPGA IRQ controller setup code to its own file, in
      preparation for switching off of IRL mode and having it provide its own
      irq_chip.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      5f240718
    • P
      sh: mach-sdk7786: FPGA updates. · efd590d5
      Paul Mundt 提交于
      This does a bit of refactoring of the FPGA management code. The primary
      FPGA initialization is moved out to its own file in preparation for
      implementing some of the more complex capabilities, a complete set of
      register definitions is provided, and all of the existing users in the
      board code are moved over to use the new interface instead of setting up
      overlapping mappings. This also corrects the FPGA size, which previously
      was chomped off at the SDIF control register.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      efd590d5
    • P
      sh: Handle SH-4 FPU variants with broken CVR values. · bdc27300
      Paul Mundt 提交于
      Usually we can look to the CVR to work out whether we have an FPU or not.
      Unfortunately not all parts comply with this, so just set the flag
      manually for all SH-4 parts and clear it on the only SH-4 that doesn't
      have one (SH4-501).
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      bdc27300
    • M
      sh: update PFC to allow any enum in MARK lists · 50dd3145
      Magnus Damm 提交于
      This patch updates the PFC code with some clarifying
      comments together with a functional change. The change
      allows function type of GPIO to select any type of enum
      in their MARK lists. Without this patch only function
      type of enums are allowed in MARK lists.
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      50dd3145
    • P
      sh: Shut up noisy IOREMAP_FIXED=n build. · 70911b86
      Paul Mundt 提交于
      The ioremap_fixed() stub neglected to provide a return value, resulting
      in a fairly noisy build.
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      70911b86
  5. 19 1月, 2010 16 次提交
  6. 18 1月, 2010 5 次提交