15 Oct, 2010

3 commits


14 Oct, 2010

4 commits

  • The SDK7786 FPGA has secondary control over the PCIe clocks, specifically
    relating to the slots and oscillator. This ties the FPGA clocks in to the
    clock framework and balances the refcounting similar to how the primary
    on-chip clocks are managed. While the on-chip clocks are per-port, the
    FPGA clock enable/disable is global for the entire block.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • SDK7786 supports connecting either slot3 or 4 to the same PCIe port by
    way of FPGA muxing. By default the vertical slot 3 on the baseboard is
    enabled, so this adds in a command line option for forcibly enabling the
    slot 4 edge connector.

    If nothing has been specified on the command line, we fall back to
    reading the resistor values for card presence to figure out where to
    route the port to.

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • This first converts the PMB locking over to raw spinlocks, and secondly
    fixes up a nested locking issue that was triggering lockdep early on:

    swapper/0 is trying to acquire lock:
    (&pmbe->lock){......}, at: [] pmb_init+0xf4/0x4dc

    but task is already holding lock:
    (&pmbe->lock){......}, at: [] pmb_init+0xc6/0x4dc

    other info that might help us debug this:
    1 lock held by swapper/0:
    #0: (&pmbe->lock){......}, at: [] pmb_init+0xc6/0x4dc

    Signed-off-by: Paul Mundt

    Paul Mundt
     
  • The sdk7786 FPGA supports a number of user settable input switches that
    are otherwise unused. This wires up a dummy gpio chip for the switch bank
    to simply expose them to userspace.

    Signed-off-by: Paul Mundt

    Paul Mundt
     

13 Oct, 2010

6 commits


11 Oct, 2010

1 commit


07 Oct, 2010

1 commit

  • SH-3 lacks an MMUCR_TI definition for global TLB flushes. As SH-3 parts
    lack a split TLB, the same global flush behaviour is accomplished
    through the flush bit, which just happens to be the same as on SH-4.

    This fixes up the build for all SH-3 MMU parts.

    Signed-off-by: Paul Mundt

    Paul Mundt
     

06 Oct, 2010

4 commits


05 Oct, 2010

5 commits

  • SH7786 is the big user for subgroup splitting, mostly for the PCIe block,
    but those will follow later. For now we simply split up SCIF1, as used by
    the serial console on SDK7786 and others.

    Signed-off-by: Paul Mundt

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

7 commits


03 Oct, 2010

1 commit


02 Oct, 2010

4 commits


01 Oct, 2010

2 commits


30 Sep, 2010

2 commits

  • Update the SH kernel to keep SR.BL set until the VBR
    register has been initialized. Useful to allow boot
    of the kernel even though exceptions are pending.

    Without this patch there is a window of time when
    exceptions such as NMI are enabled but no exception
    handlers are installed.

    This patch modifies both the zImage loader and the
    actual kernel to boot with BL=1, but the zImage
    loader is modfied in such a way that the init_sr
    value is unchanged to not break the zImage loader
    provided by kexec.

    Tested on sh7724 Ecovec and on the SH4AL-DSP core
    included in sh7372.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • kfree() in clkdev_drop() function should actually be called with an address of
    a struct clk_lookup_alloc object, and not struct clk_lookup, as presently done.
    This just happens to work, because "struct clk_lookup cl" is the first
    member in struct clk_lookup_alloc.

    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Paul Mundt

    Guennadi Liakhovetski