Merge branches 'acpi-video', 'device-properties', 'pm-sleep' and 'pm-cpuidle'
* acpi-video: ACPI / video: Inline acpi_video_set_dmi_backlight_type * device-properties: ACPI / OF: Rename of_node() and acpi_node() to to_of_node() and to_acpi_node() * pm-sleep: PM / sleep: Increase default DPM watchdog timeout to 60 PM / hibernate: re-enable nonboot cpus on disable_nonboot_cpus() failure * pm-cpuidle: tick/idle/powerpc: Do not register idle states with CPUIDLE_FLAG_TIMER_STOP set in periodic mode
This commit is contained in:
commit
132c242d95
@ -129,9 +129,9 @@ EXPORT_SYMBOL_GPL(device_property_present);
|
|||||||
bool fwnode_property_present(struct fwnode_handle *fwnode, const char *propname)
|
bool fwnode_property_present(struct fwnode_handle *fwnode, const char *propname)
|
||||||
{
|
{
|
||||||
if (is_of_node(fwnode))
|
if (is_of_node(fwnode))
|
||||||
return of_property_read_bool(of_node(fwnode), propname);
|
return of_property_read_bool(to_of_node(fwnode), propname);
|
||||||
else if (is_acpi_node(fwnode))
|
else if (is_acpi_node(fwnode))
|
||||||
return !acpi_dev_prop_get(acpi_node(fwnode), propname, NULL);
|
return !acpi_dev_prop_get(to_acpi_node(fwnode), propname, NULL);
|
||||||
|
|
||||||
return !!pset_prop_get(to_pset(fwnode), propname);
|
return !!pset_prop_get(to_pset(fwnode), propname);
|
||||||
}
|
}
|
||||||
@ -286,10 +286,10 @@ EXPORT_SYMBOL_GPL(device_property_read_string);
|
|||||||
({ \
|
({ \
|
||||||
int _ret_; \
|
int _ret_; \
|
||||||
if (is_of_node(_fwnode_)) \
|
if (is_of_node(_fwnode_)) \
|
||||||
_ret_ = OF_DEV_PROP_READ_ARRAY(of_node(_fwnode_), _propname_, \
|
_ret_ = OF_DEV_PROP_READ_ARRAY(to_of_node(_fwnode_), _propname_, \
|
||||||
_type_, _val_, _nval_); \
|
_type_, _val_, _nval_); \
|
||||||
else if (is_acpi_node(_fwnode_)) \
|
else if (is_acpi_node(_fwnode_)) \
|
||||||
_ret_ = acpi_dev_prop_read(acpi_node(_fwnode_), _propname_, \
|
_ret_ = acpi_dev_prop_read(to_acpi_node(_fwnode_), _propname_, \
|
||||||
_proptype_, _val_, _nval_); \
|
_proptype_, _val_, _nval_); \
|
||||||
else \
|
else \
|
||||||
_ret_ = pset_prop_read_array(to_pset(_fwnode_), _propname_, \
|
_ret_ = pset_prop_read_array(to_pset(_fwnode_), _propname_, \
|
||||||
@ -425,11 +425,11 @@ int fwnode_property_read_string_array(struct fwnode_handle *fwnode,
|
|||||||
{
|
{
|
||||||
if (is_of_node(fwnode))
|
if (is_of_node(fwnode))
|
||||||
return val ?
|
return val ?
|
||||||
of_property_read_string_array(of_node(fwnode), propname,
|
of_property_read_string_array(to_of_node(fwnode),
|
||||||
val, nval) :
|
propname, val, nval) :
|
||||||
of_property_count_strings(of_node(fwnode), propname);
|
of_property_count_strings(to_of_node(fwnode), propname);
|
||||||
else if (is_acpi_node(fwnode))
|
else if (is_acpi_node(fwnode))
|
||||||
return acpi_dev_prop_read(acpi_node(fwnode), propname,
|
return acpi_dev_prop_read(to_acpi_node(fwnode), propname,
|
||||||
DEV_PROP_STRING, val, nval);
|
DEV_PROP_STRING, val, nval);
|
||||||
|
|
||||||
return pset_prop_read_array(to_pset(fwnode), propname,
|
return pset_prop_read_array(to_pset(fwnode), propname,
|
||||||
@ -456,9 +456,9 @@ int fwnode_property_read_string(struct fwnode_handle *fwnode,
|
|||||||
const char *propname, const char **val)
|
const char *propname, const char **val)
|
||||||
{
|
{
|
||||||
if (is_of_node(fwnode))
|
if (is_of_node(fwnode))
|
||||||
return of_property_read_string(of_node(fwnode), propname, val);
|
return of_property_read_string(to_of_node(fwnode), propname, val);
|
||||||
else if (is_acpi_node(fwnode))
|
else if (is_acpi_node(fwnode))
|
||||||
return acpi_dev_prop_read(acpi_node(fwnode), propname,
|
return acpi_dev_prop_read(to_acpi_node(fwnode), propname,
|
||||||
DEV_PROP_STRING, val, 1);
|
DEV_PROP_STRING, val, 1);
|
||||||
|
|
||||||
return -ENXIO;
|
return -ENXIO;
|
||||||
@ -476,13 +476,13 @@ struct fwnode_handle *device_get_next_child_node(struct device *dev,
|
|||||||
if (IS_ENABLED(CONFIG_OF) && dev->of_node) {
|
if (IS_ENABLED(CONFIG_OF) && dev->of_node) {
|
||||||
struct device_node *node;
|
struct device_node *node;
|
||||||
|
|
||||||
node = of_get_next_available_child(dev->of_node, of_node(child));
|
node = of_get_next_available_child(dev->of_node, to_of_node(child));
|
||||||
if (node)
|
if (node)
|
||||||
return &node->fwnode;
|
return &node->fwnode;
|
||||||
} else if (IS_ENABLED(CONFIG_ACPI)) {
|
} else if (IS_ENABLED(CONFIG_ACPI)) {
|
||||||
struct acpi_device *node;
|
struct acpi_device *node;
|
||||||
|
|
||||||
node = acpi_get_next_child(dev, acpi_node(child));
|
node = acpi_get_next_child(dev, to_acpi_node(child));
|
||||||
if (node)
|
if (node)
|
||||||
return acpi_fwnode_handle(node);
|
return acpi_fwnode_handle(node);
|
||||||
}
|
}
|
||||||
@ -501,7 +501,7 @@ EXPORT_SYMBOL_GPL(device_get_next_child_node);
|
|||||||
void fwnode_handle_put(struct fwnode_handle *fwnode)
|
void fwnode_handle_put(struct fwnode_handle *fwnode)
|
||||||
{
|
{
|
||||||
if (is_of_node(fwnode))
|
if (is_of_node(fwnode))
|
||||||
of_node_put(of_node(fwnode));
|
of_node_put(to_of_node(fwnode));
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(fwnode_handle_put);
|
EXPORT_SYMBOL_GPL(fwnode_handle_put);
|
||||||
|
|
||||||
|
@ -67,6 +67,8 @@ static int nap_loop(struct cpuidle_device *dev,
|
|||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Register for fastsleep only in oneshot mode of broadcast */
|
||||||
|
#ifdef CONFIG_TICK_ONESHOT
|
||||||
static int fastsleep_loop(struct cpuidle_device *dev,
|
static int fastsleep_loop(struct cpuidle_device *dev,
|
||||||
struct cpuidle_driver *drv,
|
struct cpuidle_driver *drv,
|
||||||
int index)
|
int index)
|
||||||
@ -90,7 +92,7 @@ static int fastsleep_loop(struct cpuidle_device *dev,
|
|||||||
|
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* States for dedicated partition case.
|
* States for dedicated partition case.
|
||||||
*/
|
*/
|
||||||
@ -216,7 +218,14 @@ static int powernv_add_idle_states(void)
|
|||||||
powernv_states[nr_idle_states].flags = 0;
|
powernv_states[nr_idle_states].flags = 0;
|
||||||
powernv_states[nr_idle_states].target_residency = 100;
|
powernv_states[nr_idle_states].target_residency = 100;
|
||||||
powernv_states[nr_idle_states].enter = &nap_loop;
|
powernv_states[nr_idle_states].enter = &nap_loop;
|
||||||
} else if (flags[i] & OPAL_PM_SLEEP_ENABLED ||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All cpuidle states with CPUIDLE_FLAG_TIMER_STOP set must come
|
||||||
|
* within this config dependency check.
|
||||||
|
*/
|
||||||
|
#ifdef CONFIG_TICK_ONESHOT
|
||||||
|
if (flags[i] & OPAL_PM_SLEEP_ENABLED ||
|
||||||
flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) {
|
flags[i] & OPAL_PM_SLEEP_ENABLED_ER1) {
|
||||||
/* Add FASTSLEEP state */
|
/* Add FASTSLEEP state */
|
||||||
strcpy(powernv_states[nr_idle_states].name, "FastSleep");
|
strcpy(powernv_states[nr_idle_states].name, "FastSleep");
|
||||||
@ -225,7 +234,7 @@ static int powernv_add_idle_states(void)
|
|||||||
powernv_states[nr_idle_states].target_residency = 300000;
|
powernv_states[nr_idle_states].target_residency = 300000;
|
||||||
powernv_states[nr_idle_states].enter = &fastsleep_loop;
|
powernv_states[nr_idle_states].enter = &fastsleep_loop;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
powernv_states[nr_idle_states].exit_latency =
|
powernv_states[nr_idle_states].exit_latency =
|
||||||
((unsigned int)latency_ns[i]) / 1000;
|
((unsigned int)latency_ns[i]) / 1000;
|
||||||
|
|
||||||
|
@ -2052,14 +2052,14 @@ struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
|
|||||||
if (is_of_node(fwnode)) {
|
if (is_of_node(fwnode)) {
|
||||||
enum of_gpio_flags flags;
|
enum of_gpio_flags flags;
|
||||||
|
|
||||||
desc = of_get_named_gpiod_flags(of_node(fwnode), propname, 0,
|
desc = of_get_named_gpiod_flags(to_of_node(fwnode), propname, 0,
|
||||||
&flags);
|
&flags);
|
||||||
if (!IS_ERR(desc))
|
if (!IS_ERR(desc))
|
||||||
active_low = flags & OF_GPIO_ACTIVE_LOW;
|
active_low = flags & OF_GPIO_ACTIVE_LOW;
|
||||||
} else if (is_acpi_node(fwnode)) {
|
} else if (is_acpi_node(fwnode)) {
|
||||||
struct acpi_gpio_info info;
|
struct acpi_gpio_info info;
|
||||||
|
|
||||||
desc = acpi_get_gpiod_by_index(acpi_node(fwnode), propname, 0,
|
desc = acpi_get_gpiod_by_index(to_acpi_node(fwnode), propname, 0,
|
||||||
&info);
|
&info);
|
||||||
if (!IS_ERR(desc))
|
if (!IS_ERR(desc))
|
||||||
active_low = info.active_low;
|
active_low = info.active_low;
|
||||||
|
@ -191,7 +191,7 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
np = of_node(child);
|
np = to_of_node(child);
|
||||||
|
|
||||||
if (fwnode_property_present(child, "label")) {
|
if (fwnode_property_present(child, "label")) {
|
||||||
fwnode_property_read_string(child, "label", &led.name);
|
fwnode_property_read_string(child, "label", &led.name);
|
||||||
|
@ -420,7 +420,7 @@ static inline bool is_acpi_node(struct fwnode_handle *fwnode)
|
|||||||
return fwnode && fwnode->type == FWNODE_ACPI;
|
return fwnode && fwnode->type == FWNODE_ACPI;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct acpi_device *acpi_node(struct fwnode_handle *fwnode)
|
static inline struct acpi_device *to_acpi_node(struct fwnode_handle *fwnode)
|
||||||
{
|
{
|
||||||
return is_acpi_node(fwnode) ?
|
return is_acpi_node(fwnode) ?
|
||||||
container_of(fwnode, struct acpi_device, fwnode) : NULL;
|
container_of(fwnode, struct acpi_device, fwnode) : NULL;
|
||||||
|
@ -43,7 +43,7 @@ static inline enum acpi_backlight_type acpi_video_get_backlight_type(void)
|
|||||||
{
|
{
|
||||||
return acpi_backlight_vendor;
|
return acpi_backlight_vendor;
|
||||||
}
|
}
|
||||||
static void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type)
|
static inline void acpi_video_set_dmi_backlight_type(enum acpi_backlight_type type)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -53,7 +53,7 @@ static inline acpi_handle acpi_device_handle(struct acpi_device *adev)
|
|||||||
return adev ? adev->handle : NULL;
|
return adev ? adev->handle : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ACPI_COMPANION(dev) acpi_node((dev)->fwnode)
|
#define ACPI_COMPANION(dev) to_acpi_node((dev)->fwnode)
|
||||||
#define ACPI_COMPANION_SET(dev, adev) set_primary_fwnode(dev, (adev) ? \
|
#define ACPI_COMPANION_SET(dev, adev) set_primary_fwnode(dev, (adev) ? \
|
||||||
acpi_fwnode_handle(adev) : NULL)
|
acpi_fwnode_handle(adev) : NULL)
|
||||||
#define ACPI_HANDLE(dev) acpi_device_handle(ACPI_COMPANION(dev))
|
#define ACPI_HANDLE(dev) acpi_device_handle(ACPI_COMPANION(dev))
|
||||||
@ -449,7 +449,7 @@ static inline bool is_acpi_node(struct fwnode_handle *fwnode)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct acpi_device *acpi_node(struct fwnode_handle *fwnode)
|
static inline struct acpi_device *to_acpi_node(struct fwnode_handle *fwnode)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ static inline bool is_of_node(struct fwnode_handle *fwnode)
|
|||||||
return fwnode && fwnode->type == FWNODE_OF;
|
return fwnode && fwnode->type == FWNODE_OF;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct device_node *of_node(struct fwnode_handle *fwnode)
|
static inline struct device_node *to_of_node(struct fwnode_handle *fwnode)
|
||||||
{
|
{
|
||||||
return fwnode ? container_of(fwnode, struct device_node, fwnode) : NULL;
|
return fwnode ? container_of(fwnode, struct device_node, fwnode) : NULL;
|
||||||
}
|
}
|
||||||
@ -387,7 +387,7 @@ static inline bool is_of_node(struct fwnode_handle *fwnode)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct device_node *of_node(struct fwnode_handle *fwnode)
|
static inline struct device_node *to_of_node(struct fwnode_handle *fwnode)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ config DPM_WATCHDOG
|
|||||||
config DPM_WATCHDOG_TIMEOUT
|
config DPM_WATCHDOG_TIMEOUT
|
||||||
int "Watchdog timeout in seconds"
|
int "Watchdog timeout in seconds"
|
||||||
range 1 120
|
range 1 120
|
||||||
default 12
|
default 60
|
||||||
depends on DPM_WATCHDOG
|
depends on DPM_WATCHDOG
|
||||||
|
|
||||||
config PM_TRACE
|
config PM_TRACE
|
||||||
|
@ -552,7 +552,7 @@ int hibernation_platform_enter(void)
|
|||||||
|
|
||||||
error = disable_nonboot_cpus();
|
error = disable_nonboot_cpus();
|
||||||
if (error)
|
if (error)
|
||||||
goto Platform_finish;
|
goto Enable_cpus;
|
||||||
|
|
||||||
local_irq_disable();
|
local_irq_disable();
|
||||||
syscore_suspend();
|
syscore_suspend();
|
||||||
@ -568,6 +568,8 @@ int hibernation_platform_enter(void)
|
|||||||
Power_up:
|
Power_up:
|
||||||
syscore_resume();
|
syscore_resume();
|
||||||
local_irq_enable();
|
local_irq_enable();
|
||||||
|
|
||||||
|
Enable_cpus:
|
||||||
enable_nonboot_cpus();
|
enable_nonboot_cpus();
|
||||||
|
|
||||||
Platform_finish:
|
Platform_finish:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user