• Lorenzo Pieralisi's avatar
    drivers: cpuidle: implement DT based idle states infrastructure · 9f14da34
    Lorenzo Pieralisi authored
    On most common ARM systems, the low-power states a CPU can be put into are
    not discoverable in HW and require device tree bindings to describe
    power down suspend operations and idle states parameters.
    
    In order to enable DT based idle states and configure idle drivers, this
    patch implements the bulk infrastructure required to parse the device tree
    idle states bindings and initialize the corresponding CPUidle driver states
    data.
    
    The parsing API accepts a start index that defines the first idle state
    that should be initialized by the parsing code in order to give new and
    legacy driver flexibility over which states should be parsed using the
    new DT mechanism.
    
    The idle states node(s) is obtained from the phandle list of the first cpu
    in the driver cpumask;  the kernel checks that the idle state node phandle
    is the same for all CPUs in the driver cpumask before declaring the idle state
    as valid and start parsing its content.
    
    The idle state enter function pointer is initialized through DT match
    structures passed in by the CPUidle driver, so that ARM legacy code can
    cope with platform specific idle entry method based on compatible
    string matching and the code used to initialize the enter function pointer
    can be moved to the DT generic layer.
    Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Acked-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
    9f14da34
dt_idle_states.h 177 Bytes