19 Jun, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not see http www gnu org
    licenses

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 503 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Alexios Zavras
    Reviewed-by: Allison Randal
    Reviewed-by: Enrico Weigelt
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190602204653.811534538@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

29 Apr, 2019

2 commits

  • If interrupts are enabled for a non-root GIC device that uses the
    gic-pm driver, when system suspend occurs, the current interrupt
    state is not saved and restored correctly and so interrupts do not
    work again on resuming the system. Add a late suspend handler to
    save and restore the state for these devices.

    Suggested-by: Jonathan Hunter
    Signed-off-by: Sameer Pujar
    Reviewed-by: Jon Hunter
    Tested-by: Jon Hunter
    Signed-off-by: Marc Zyngier

    Sameer Pujar
     
  • gic-pm driver is using pm-clk framework to manage clock resources, where
    clocks remain always ON. This happens on Tegra devices which use BPMP
    co-processor to manage the clocks. Calls to BPMP are always blocking and
    hence it is necessary to enable/disable clocks during prepare/unprepare
    phase respectively. When pm-clk is used, prepare count of clock is not
    balanced until pm_clk_remove() happens. Clock is prepared in the driver
    probe() and thus prepare count of clock remains non-zero, which in turn
    keeps clock ON always.

    Please note that above mentioned behavior is specific to Tegra devices
    using BPMP for clock management and this should not be seen on other
    devices. Though this patch uses clk_bulk APIs to address the mentioned
    behavior, this works fine for all devices.

    To simplify gic_get_clocks() API is removed and instead probe can do
    necessary setup.

    Suggested-by: Mohan Kumar D
    Signed-off-by: Sameer Pujar
    Reviewed-by: Jon Hunter
    Tested-by: Jon Hunter
    Signed-off-by: Marc Zyngier

    Sameer Pujar
     

13 Sep, 2016

1 commit

  • Commit 498b5fdd40dd ("PM / clk: Add support for adding a specific clock
    from device-tree") add a new helper function for adding a clock from
    device-tree to a device. Update the GIC-PM driver to use this new
    function to simplify the driver.

    Signed-off-by: Jon Hunter
    Signed-off-by: Marc Zyngier

    Jon Hunter
     

13 Jun, 2016

1 commit

  • Add a platform driver to support non-root GICs that require runtime
    power-management. Currently, only non-root GICs are supported because
    the functions, smp_cross_call() and set_handle_irq(), that need to
    be called for a root controller are located in the __init section and
    so cannot be called by the platform driver.

    The GIC platform driver re-uses many functions from the existing GIC
    driver including some functions to save and restore the GIC context
    during power transitions. The functions for saving and restoring the
    GIC context are currently only defined if CONFIG_CPU_PM is enabled and
    to ensure that these functions are always defined when the platform
    driver is enabled, a dependency on CONFIG_ARM_GIC_PM (which selects the
    platform driver) has been added.

    In order to re-use the private GIC initialisation code, a new public
    function, gic_of_init_child(), has been added which calls various
    private functions to initialise the GIC. This is different from the
    existing gic_of_init() because it only supports non-root GICs (ie. does
    not call smp_cross_call() is set_handle_irq()) and is not located in
    the __init section (so can be used by platform drivers). Furthermore,
    gic_of_init_child() dynamically allocates memory for the GIC chip data
    which is also different from gic_of_init().

    There is no specific suspend handling for GICs registered as platform
    devices. Non-wakeup interrupts will be disabled by the kernel during
    late suspend, however, this alone will not power down the GIC if
    interrupts have been requested and not freed. Therefore, requestors of
    non-wakeup interrupts will need to free them on entering suspend in
    order to power-down the GIC.

    Signed-off-by: Jon Hunter
    Signed-off-by: Marc Zyngier

    Jon Hunter