• Jon Hunter's avatar
    PM / Domains: Add support for removing PM domains · 3fe57710
    Jon Hunter authored
    The genpd framework allows users to add PM domains via the pm_genpd_init()
    function, however, there is no corresponding function to remove a PM
    domain. For most devices this may be fine as the PM domains are never
    removed, however, for devices that wish to populate the PM domains from
    within a driver, having the ability to remove a PM domain if the probing
    of the device fails or the driver is unloaded is necessary.
    
    Add the function pm_genpd_remove() to remove a PM domain by referencing
    it's generic_pm_domain structure. Note that the bulk of the code that
    removes the PM domain is placed in a separate local function
    genpd_remove() (which is called by pm_genpd_remove()). The code is
    structured in this way to prepare for adding another function to remove
    a PM domain by provider that will also call genpd_remove(). Note that
    users of genpd_remove() must call this function with the mutex,
    gpd_list_lock, held.
    
    PM domains can only be removed if the associated provider has been
    removed, they are not a parent domain to another PM domain and have no
    devices associated with them.
    Signed-off-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    3fe57710
domain.c 50.8 KB