From 77e5e026b36083dfb2a41f9f4c6683064913d1ba Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Wed, 3 Apr 2019 11:58:59 +0800 Subject: [PATCH] soc: rockchip: system_monitor: Add fb notifier Change-Id: I8c3f2f145bb0c99d5aa8c28422606a6af1a82b09 Signed-off-by: Finley Xiao --- drivers/devfreq/rockchip_dmc.c | 38 ------------------ .../soc/rockchip/rockchip_system_monitor.c | 39 +++++++++++++++++++ 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index 4148b8a47bbb..5eda7b59b47f 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -1116,7 +1115,6 @@ struct rockchip_dmcfreq { struct dram_timing *timing; struct regulator *vdd_center; struct notifier_block status_nb; - struct notifier_block fb_nb; struct list_head video_info_list; struct freq_map_table *vop_bw_tbl; struct work_struct boost_work; @@ -2830,37 +2828,6 @@ next: return NOTIFY_OK; } -static int rockchip_dmcfreq_fb_notifier(struct notifier_block *nb, - unsigned long action, void *ptr) -{ - struct fb_event *event = ptr; - - switch (action) { - case FB_EARLY_EVENT_BLANK: - switch (*((int *)event->data)) { - case FB_BLANK_UNBLANK: - rockchip_clear_system_status(SYS_STATUS_SUSPEND); - break; - default: - break; - } - break; - case FB_EVENT_BLANK: - switch (*((int *)event->data)) { - case FB_BLANK_POWERDOWN: - rockchip_set_system_status(SYS_STATUS_SUSPEND); - break; - default: - break; - } - break; - default: - break; - } - - return NOTIFY_OK; -} - static ssize_t rockchip_dmcfreq_status_show(struct device *dev, struct device_attribute *attr, char *buf) @@ -3411,11 +3378,6 @@ static void rockchip_dmcfreq_register_notifier(struct rockchip_dmcfreq *dmcfreq) if (ret) dev_err(dmcfreq->dev, "failed to register system_status nb\n"); - dmcfreq->fb_nb.notifier_call = rockchip_dmcfreq_fb_notifier; - ret = fb_register_client(&dmcfreq->fb_nb); - if (ret) - dev_err(dmcfreq->dev, "failed to register fb nb\n"); - dmc_mdevp.data = dmcfreq->devfreq; dmcfreq->mdev_info = rockchip_system_monitor_register(dmcfreq->dev, &dmc_mdevp); diff --git a/drivers/soc/rockchip/rockchip_system_monitor.c b/drivers/soc/rockchip/rockchip_system_monitor.c index 550f70cd42e9..4ca7a919b333 100644 --- a/drivers/soc/rockchip/rockchip_system_monitor.c +++ b/drivers/soc/rockchip/rockchip_system_monitor.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -1364,6 +1365,41 @@ static struct notifier_block rockchip_monitor_reboot_nb = { .notifier_call = rockchip_monitor_reboot_notifier, }; +static int rockchip_monitor_fb_notifier(struct notifier_block *nb, + unsigned long action, void *ptr) +{ + struct fb_event *event = ptr; + + switch (action) { + case FB_EARLY_EVENT_BLANK: + switch (*((int *)event->data)) { + case FB_BLANK_UNBLANK: + rockchip_clear_system_status(SYS_STATUS_SUSPEND); + break; + default: + break; + } + break; + case FB_EVENT_BLANK: + switch (*((int *)event->data)) { + case FB_BLANK_POWERDOWN: + rockchip_set_system_status(SYS_STATUS_SUSPEND); + break; + default: + break; + } + break; + default: + break; + } + + return NOTIFY_OK; +} + +static struct notifier_block rockchip_monitor_fb_nb = { + .notifier_call = rockchip_monitor_fb_notifier, +}; + static int rockchip_system_monitor_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -1404,6 +1440,9 @@ static int rockchip_system_monitor_probe(struct platform_device *pdev) register_reboot_notifier(&rockchip_monitor_reboot_nb); + if (fb_register_client(&rockchip_monitor_fb_nb)) + dev_err(dev, "failed to register fb nb\n"); + return 0; }