1. 26 Nov, 2015 1 commit
    • Achin Gupta's avatar
      Add ARM GICv3 driver without support for legacy operation · df373737
      Achin Gupta authored
      This patch adds a driver for ARM GICv3 systems that need to run software
      stacks where affinity routing is enabled across all privileged exception
      levels for both security states. This driver is a partial implementation
      of the ARM Generic Interrupt Controller Architecture Specification, GIC
      architecture version 3.0 and version 4.0 (ARM IHI 0069A). The driver does
      not cater for legacy support of interrupts and asymmetric configurations.
      
      The existing GIC driver has been preserved unchanged. The common code for
      GICv2 and GICv3 systems has been refactored into a new file,
      `drivers/arm/gic/common/gic_common.c`. The corresponding header is in
      `include/drivers/arm/gic_common.h`.
      
      The driver interface is implemented in `drivers/arm/gic/v3/gicv3_main.c`.
      The corresponding header is in `include/drivers/arm/gicv3.h`. Helper
      functions are implemented in `drivers/arm/gic/v3/arm_gicv3_helpers.c`
      and are accessible through the `drivers/arm/gic/v3/gicv3_private.h`
      header.
      
      Change-Id: I8c3c834a1d049d05b776b4dcb76b18ccb927444a
      df373737
  2. 09 Jul, 2015 1 commit
    • Juan Castillo's avatar
      Use uintptr_t as base address type in ARM driver APIs · 02462972
      Juan Castillo authored
      This patch changes the type of the base address parameter in the
      ARM device driver APIs to uintptr_t (GIC, CCI, TZC400, PL011). The
      uintptr_t type allows coverage of the whole memory space and to
      perform arithmetic operations on the addresses. ARM platform code
      has also been updated to use uintptr_t as GIC base address in the
      configuration.
      
      Fixes ARM-software/tf-issues#214
      
      Change-Id: I1b87daedadcc8b63e8f113477979675e07d788f1
      02462972
  3. 31 Oct, 2014 1 commit
    • Juan Castillo's avatar
      Improvements to ARM GIC driver · eb57fa56
      Juan Castillo authored
      This patch introduces several improvements to the ARM GIC driver:
      
      * In function gicd_set_itargetsr(), target CPU is specified using
        the same bit mask detailed in the GICD_ITARGETSRn register instead
        of the CPU linear ID, removing the dependency between bit position
        and linear ID in the platform porting. The current CPU bit mask
        may be obtained by reading GICD_ITARGETSR0.
      
      * PPIs and SGIs are initialized in arm_gic_pcpu_distif_setup().
        SPIs are initialized in arm_gic_distif_setup().
      
      * By default, non secure interrupts are assigned the maximum
        priority allowed to a non secure interrupt (defined by
        GIC_HIGHEST_NS_PRIORITY).
      
      * GICR base address is allowed to be NULL for GICv1 and GICv2.
      
      Change-Id: Ie2837fe860d43b2282e582dfdb13c39c6186f232
      eb57fa56
  4. 22 May, 2014 1 commit
    • Achin Gupta's avatar
      Introduce interrupt registration framework in BL3-1 · e1333f75
      Achin Gupta authored
      This patch introduces a framework for registering interrupts routed to
      EL3. The interrupt routing model is governed by the SCR_EL3.IRQ and
      FIQ bits and the security state an interrupt is generated in. The
      framework recognizes three type of interrupts depending upon which
      exception level and security state they should be handled in
      i.e. Secure EL1 interrupts, Non-secure interrupts and EL3
      interrupts. It provides an API and macros that allow a runtime service
      to register an handler for a type of interrupt and specify the routing
      model. The framework validates the routing model and uses the context
      management framework to ensure that it is applied to the SCR_EL3 prior
      to entry into the target security state. It saves the handler in
      internal data structures. An API is provided to retrieve the handler
      when an interrupt of a particular type is asserted. Registration is
      expected to be done once by the primary CPU. The same handler and
      routing model is used for all CPUs.
      
      Support for EL3 interrupts will be added to the framework in the
      future. A makefile flag has been added to allow the FVP port choose
      between ARM GIC v2 and v3 support in EL3. The latter version is
      currently unsupported.
      
      A framework for handling interrupts in BL3-1 will be introduced in
      subsequent patches. The default routing model in the absence of any
      handlers expects no interrupts to be routed to EL3.
      
      Change-Id: Idf7c023b34fcd4800a5980f2bef85e4b5c29e649
      e1333f75
  5. 13 May, 2014 1 commit
    • Juan Castillo's avatar
      Fix C accessors to GIC distributor registers with set/clear semantics · 42a52d89
      Juan Castillo authored
      This patch fixes C accessors to GIC registers that follow a set/clear
      semantic to change the state of an interrupt, instead of read/write/modify.
      These registers are:
        Set-Enable
        Clear-Enable
        Set-Pending
        Clear-Pending
        Set-Active
        Clear-Active
      For instance, to enable an interrupt we write a one to the corresponding bit
      in the Set-Enable register, whereas to disable it we write a one to the
      corresponding bit in the Clear-Enable register.
      
      Fixes ARM-software/tf-issues#137
      
      Change-Id: I3b66bad94d0b28e0fe08c9042bac0bf5ffa07944
      42a52d89
  6. 06 May, 2014 2 commits
    • Dan Handley's avatar
      Refactor GIC header files · 8a4fb6f6
      Dan Handley authored
      Move the function prototypes from gic.h into either gic_v2.h or
      gic_v3.h as appropriate. Update the source files to include the
      correct headers.
      
      Change-Id: I368cfda175cdcbd3a68f46e2332738ec49048e19
      8a4fb6f6
    • Dan Handley's avatar
      Move include and source files to logical locations · 4ecca339
      Dan Handley authored
      Move almost all system include files to a logical sub-directory
      under ./include. The only remaining system include directories
      not under ./include are specific to the platform. Move the
      corresponding source files to match the include directory
      structure.
      
      Also remove pm.h as it is no longer used.
      
      Change-Id: Ie5ea6368ec5fad459f3e8a802ad129135527f0b3
      4ecca339
  7. 05 Mar, 2014 1 commit
    • Jon Medhurst's avatar
      Fix implementation and users of gicd_set_ipriorityr() · cf6eeb8a
      Jon Medhurst authored
      
      
      Make gicd_set_ipriorityr() actually write to the priority register.
      
      Also correct callers of this function which want the highest priority
      to use the value zero as this is the highest priority value according
      to the ARM Generic Interrupt Controller Architecture Specification.
      
      To make this easier to get right, we introduce defines for the lowest
      and highest priorities for secure and non-secure interrupts.
      
      Fixes ARM-software/tf-issues#21
      Signed-off-by: default avatarJon Medhurst <tixy@linaro.org>
      cf6eeb8a
  8. 17 Jan, 2014 1 commit
  9. 05 Dec, 2013 1 commit
    • Dan Handley's avatar
      Enable third party contributions · ab2d31ed
      Dan Handley authored
      - Add instructions for contributing to ARM Trusted Firmware.
      
      - Update copyright text in all files to acknowledge contributors.
      
      Change-Id: I9311aac81b00c6c167d2f8c889aea403b84450e5
      ab2d31ed
  10. 27 Nov, 2013 1 commit
  11. 25 Oct, 2013 1 commit