Skip to content
Snippets Groups Projects
  1. Mar 29, 2011
  2. Mar 23, 2011
    • Rafael J. Wysocki's avatar
      sh: Use struct syscore_ops instead of sysdevs · a696b89c
      Rafael J. Wysocki authored
      
      Convert the SuperH clocks framework and shared interrupt handling
      code to using struct syscore_ops instead of a sysdev classes and
      sysdevs for power managment.
      
      This reduces the code size significantly and simplifies it.  The
      optimizations causing things not to be restored after creating a
      hibernation image are removed, but they might lead to undesirable
      effects during resume from hibernation (e.g. the clocks would be left
      as the boot kernel set them, which might be not the same way as the
      hibernated kernel had seen them before the hibernation).
      
      This also is necessary for removing sysdevs from the kernel entirely
      in the future.
      
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      a696b89c
  3. Jan 19, 2011
  4. Jan 10, 2011
  5. Dec 24, 2010
    • Paul Mundt's avatar
      sh: intc: Initialize radix tree gfp mask explicitly. · 30f2ba38
      Paul Mundt authored
      
      Presently the root node is initialized by way of kzalloc on the parent
      data structure, which by chance happens to do the bulk of what an
      explicit initialization does with GFP_NOWAIT semantics. This however is
      more by luck than by design, and as we ideally want to permit radix node
      allocations access to the emergency pools anyways, add in the proper
      initializer with the desired mask.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      30f2ba38
  6. Nov 19, 2010
  7. Nov 15, 2010
  8. Nov 14, 2010
  9. Nov 10, 2010
    • Paul Mundt's avatar
      sh: clkfwk: fix up compiler warnings. · ed10b490
      Paul Mundt authored
      
        CC      drivers/sh/clk/core.o
      drivers/sh/clk/core.c: In function 'clk_round_parent':
      drivers/sh/clk/core.c:574: warning: format '%lu' expects type 'long unsigned int', but argument 2 has type 'unsigned int'
      drivers/sh/clk/core.c:594: warning: format '%lu' expects type 'long unsigned int', but argument 2 has type 'unsigned int'
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      ed10b490
  10. Nov 07, 2010
  11. Nov 01, 2010
  12. Oct 27, 2010
  13. Oct 26, 2010
  14. Oct 18, 2010
  15. Oct 15, 2010
    • Paul Mundt's avatar
      sh: clkfwk: Fix fault in frequency iterator. · e5690e0d
      Paul Mundt authored
      
      When updating the iterator macro an old argument assignment was used on
      the initial assignment causing a fault on the table rounding. Fix it up.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      e5690e0d
    • Paul Mundt's avatar
      sh: clkfwk: Add a helper for rate rounding by divisor ranges. · 8e122db6
      Paul Mundt authored
      
      This adds a new clk_rate_div_range_round() for implementing rate rounding
      by divisor ranges. This can be used trivially by clocks that support
      arbitrary ranged divisors without the need for rate table construction.
      
      This should only be used by clocks that both have large divisor ranges in
      addition to clocks that will never be arbitrarily scaled, as the lack of
      a backing frequency table will prevent cpufreq from being able to do much
      of anything with them.
      
      Primarily intended for use as a ->recalc helper.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      8e122db6
    • Paul Mundt's avatar
      sh: clkfwk: Abstract rate rounding helper. · f586903d
      Paul Mundt authored
      
      Presently the only assisted rate rounding is frequency table backed, but
      there are cases where it's impractical to use a frequency table for
      certain clocks (such as the FSIDIV case, which supports 65535 divisors),
      and we wish to reuse the same rate rounding algorithm.
      
      This breaks out the core of the rate rounding logic in to its own helper
      routine and shuffles the frequency table logic around, switching to using
      an iterator for the generic helper routine.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      f586903d
    • Paul Mundt's avatar
      sh: clkfwk: support clock remapping. · 28085bc5
      Paul Mundt authored
      
      This implements support for ioremapping of register windows that
      encapsulate clock control registers used by a struct clk, with
      transparent sibling inheritance.
      
      Root clocks at the top of a given topology often encapsulate the entire
      register space of all of their sibling clocks, so this mapping can be
      done once and handed down. A given clock enable/disable case maps out to
      a single bit in a shared register, so this prevents creating multiple
      overlapping mappings.
      
      The mapping case breaks down in to a couple of different situations:
      
      	- Sibling clocks without a specific mapping.
      	- Root clocks without a specific mapping.
      	- Any of sibling/root clocks with a specific mapping.
      
      Sibling clocks with no specified mapping will grovel up the clock chain
      and install the root clock mapping unconditionally at registration time.
      
      Root clocks without their own mappings have a dummy BSS-initialized
      mapping inserted that is handed down the chain just like any other
      mapping. This permits all of the sibling clock ops to read/write using
      the mapping offsets without any special configuration, enabling them to
      not care whether access ultimately goes through translatable or
      untranslatable memory.
      
      Any clock with its own mapping will have the window initialized at
      registration time and be ready for use by its clock ops. Failure to
      establish the mapping will prevent registration, so no additional sanity
      checks are needed. Sibling clocks that double as parents for the moment
      will not propagate their mapping down, but this is easily tunable if the
      need arises.
      
      All clock mappings are kref refcounted, with each instance of mapping
      inheritance incrementing the refcount.
      
      Tested-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      28085bc5
  16. Oct 13, 2010
  17. Oct 06, 2010
  18. Oct 05, 2010
    • Paul Mundt's avatar
      sh: intc: Split up the INTC code. · 2be6bb0c
      Paul Mundt authored
      
      This splits up the sh intc core in to something more vaguely resembling
      a subsystem. Most of the functionality was alread fairly well
      compartmentalized, and there were only a handful of interdependencies
      that needed to be resolved in the process.
      
      This also serves as future-proofing for the genirq and sparseirq rework,
      which will make some of the split out functionality wholly generic,
      allowing things to be killed off in place with minimal migration pain.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      2be6bb0c
    • Paul Mundt's avatar
      sh: intc: Handle early lookups of subgroup IRQs. · d74310d3
      Paul Mundt authored
      
      If lookups happen while the radix node still points to a subgroup
      mapping, an IRQ hasn't yet been made available for the specified id, so
      error out accordingly. Once the slot is replaced with an IRQ mapping and
      the tag is discarded, lookup can commence as normal.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      d74310d3
  19. Oct 04, 2010
    • Paul Mundt's avatar
      sh: intc: Support virtual mappings for IRQ subgroups. · c1e30ad9
      Paul Mundt authored
      
      Many interrupts that share a single mask source but are on different
      hardware vectors will have an associated register tied to an INTEVT that
      denotes the precise cause for the interrupt exception being triggered.
      
      This introduces the concept of IRQ subgroups in the intc core, where
      a virtual IRQ map is constructed for each of the pre-defined cause bits,
      and a higher level chained handler takes control of the parent INTEVT.
      This enables CPUs with heavily muxed IRQ vectors (especially across
      disjoint blocks) to break things out in to a series of managed chained
      handlers while being able to dynamically lookup and adopt the IRQs
      created for them.
      
      This is largely an opt-in interface, requiring CPUs to manually submit
      IRQs for subgroup splitting, in addition to providing identifiers in
      their enum maps that can be used for lazy lookup via the radix tree.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      c1e30ad9
    • Paul Mundt's avatar
      sh: intc: Implement reverse mapping for IRQs to per-controller IDs. · 44629f57
      Paul Mundt authored
      
      This implements a scheme roughly analogous to the PowerPC virtual to
      hardware IRQ mapping, which we use for IRQ to per-controller ID mapping.
      This makes it possible for drivers to use the IDs directly for lookup
      instead of hardcoding the vector.
      
      The main motivation for this work is as a building block for dynamically
      allocating virtual IRQs for demuxing INTC events sharing a single INTEVT
      in addition to a common masking source.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      44629f57
  20. Oct 03, 2010
    • Paul Mundt's avatar
      sh: pfc: Fix up BUG() triggered by gpiolib debugfs lookups. · e8184a47
      Paul Mundt authored
      
      The gpiolib debugfs entry takes a hammer approach and iterates over all
      of the potential GPIOs, regardless of their type. The SH PFC code on the
      other hand contains a variable mismash of input/output/function types
      spread out sparsely, leading to situations where the debug code can
      trigger an out of range enum for the type. Since we already have an error
      path for out of range enums, we can just hand that up to the higher level
      instead of the current BUG() behaviour.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      e8184a47
    • Paul Mundt's avatar
      sh: pfc: support pinmux deregistration. · b72421d8
      Paul Mundt authored
      
      Presently the pinmux code is a one-way thing, but there's nothing
      preventing an unregistration if no one has grabbed any of the pins.
      This will permit us to save a bit of memory on systems that require pin
      demux for certain peripherals in the case where registration of those
      peripherals fails, or they are otherwise not attached to the system.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      b72421d8
  21. Oct 02, 2010
  22. Oct 01, 2010
  23. Aug 20, 2010
    • Paul Mundt's avatar
      sh: reinstate clock framework rate rounding. · 960bc368
      Paul Mundt authored
      
      This was killed off by a simplification patch previously that failed to
      take the cpufreq use case in to account, so reinstate the old bounding
      logic. The lowest rate bounding on the other hand was broken in that it
      never actually got assigned a rate and the best fit rate was instead just
      getting lucky based on the ordering of the rate table, fix this up so the
      code actually does what it was intended to do originally.
      
      Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
      960bc368
Loading