11 Jan, 2011

1 commit


24 Dec, 2010

1 commit

  • 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: Paul Mundt

    Paul Mundt
     

19 Nov, 2010

2 commits


16 Nov, 2010

1 commit


15 Nov, 2010

3 commits


10 Nov, 2010

1 commit

  • 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: Paul Mundt

    Paul Mundt
     

08 Nov, 2010

3 commits


02 Nov, 2010

2 commits


28 Oct, 2010

1 commit


27 Oct, 2010

2 commits


26 Oct, 2010

2 commits


18 Oct, 2010

2 commits


15 Oct, 2010

4 commits

  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Kuninori Morimoto
    Signed-off-by: Paul Mundt

    Paul Mundt
     

13 Oct, 2010

2 commits


06 Oct, 2010

2 commits


05 Oct, 2010

4 commits

  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     

04 Oct, 2010

2 commits

  • 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: Paul Mundt

    Paul Mundt
     
  • 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: Paul Mundt

    Paul Mundt
     

02 Oct, 2010

2 commits


20 Aug, 2010

1 commit

  • 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: Paul Mundt

    Paul Mundt
     

16 Aug, 2010

1 commit


04 Aug, 2010

1 commit