Merge branches 'pm-cpufreq' and 'pm-sleep'
* pm-cpufreq: cpufreq: ti-cpufreq: Only register platform_device when supported * pm-sleep: exec: make de_thread() freezable
This commit is contained in:
Коммит
1d50088ca3
|
@ -201,19 +201,28 @@ static const struct of_device_id ti_cpufreq_of_match[] = {
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const struct of_device_id *ti_cpufreq_match_node(void)
|
||||||
|
{
|
||||||
|
struct device_node *np;
|
||||||
|
const struct of_device_id *match;
|
||||||
|
|
||||||
|
np = of_find_node_by_path("/");
|
||||||
|
match = of_match_node(ti_cpufreq_of_match, np);
|
||||||
|
of_node_put(np);
|
||||||
|
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
static int ti_cpufreq_probe(struct platform_device *pdev)
|
static int ti_cpufreq_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
u32 version[VERSION_COUNT];
|
u32 version[VERSION_COUNT];
|
||||||
struct device_node *np;
|
|
||||||
const struct of_device_id *match;
|
const struct of_device_id *match;
|
||||||
struct opp_table *ti_opp_table;
|
struct opp_table *ti_opp_table;
|
||||||
struct ti_cpufreq_data *opp_data;
|
struct ti_cpufreq_data *opp_data;
|
||||||
const char * const reg_names[] = {"vdd", "vbb"};
|
const char * const reg_names[] = {"vdd", "vbb"};
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
np = of_find_node_by_path("/");
|
match = dev_get_platdata(&pdev->dev);
|
||||||
match = of_match_node(ti_cpufreq_of_match, np);
|
|
||||||
of_node_put(np);
|
|
||||||
if (!match)
|
if (!match)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
@ -290,7 +299,14 @@ fail_put_node:
|
||||||
|
|
||||||
static int ti_cpufreq_init(void)
|
static int ti_cpufreq_init(void)
|
||||||
{
|
{
|
||||||
platform_device_register_simple("ti-cpufreq", -1, NULL, 0);
|
const struct of_device_id *match;
|
||||||
|
|
||||||
|
/* Check to ensure we are on a compatible platform */
|
||||||
|
match = ti_cpufreq_match_node();
|
||||||
|
if (match)
|
||||||
|
platform_device_register_data(NULL, "ti-cpufreq", -1, match,
|
||||||
|
sizeof(*match));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
module_init(ti_cpufreq_init);
|
module_init(ti_cpufreq_init);
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
#include <linux/oom.h>
|
#include <linux/oom.h>
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
#include <linux/freezer.h>
|
||||||
|
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <asm/mmu_context.h>
|
#include <asm/mmu_context.h>
|
||||||
|
@ -1083,7 +1084,7 @@ static int de_thread(struct task_struct *tsk)
|
||||||
while (sig->notify_count) {
|
while (sig->notify_count) {
|
||||||
__set_current_state(TASK_KILLABLE);
|
__set_current_state(TASK_KILLABLE);
|
||||||
spin_unlock_irq(lock);
|
spin_unlock_irq(lock);
|
||||||
schedule();
|
freezable_schedule();
|
||||||
if (unlikely(__fatal_signal_pending(tsk)))
|
if (unlikely(__fatal_signal_pending(tsk)))
|
||||||
goto killed;
|
goto killed;
|
||||||
spin_lock_irq(lock);
|
spin_lock_irq(lock);
|
||||||
|
@ -1111,7 +1112,7 @@ static int de_thread(struct task_struct *tsk)
|
||||||
__set_current_state(TASK_KILLABLE);
|
__set_current_state(TASK_KILLABLE);
|
||||||
write_unlock_irq(&tasklist_lock);
|
write_unlock_irq(&tasklist_lock);
|
||||||
cgroup_threadgroup_change_end(tsk);
|
cgroup_threadgroup_change_end(tsk);
|
||||||
schedule();
|
freezable_schedule();
|
||||||
if (unlikely(__fatal_signal_pending(tsk)))
|
if (unlikely(__fatal_signal_pending(tsk)))
|
||||||
goto killed;
|
goto killed;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче