Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751667AbdHXBoc (ORCPT ); Wed, 23 Aug 2017 21:44:32 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:20012 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751170AbdHXBnC (ORCPT ); Wed, 23 Aug 2017 21:43:02 -0400 X-AuditID: b6c32a46-f790d6d000003bf5-6f-599e2f2453bf From: Chanwoo Choi To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com, cw00.choi@samsung.com Cc: rafael.j.wysocki@intel.com, chanwoo@kernel.org, inki.dae@samsung.com, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org Subject: [PATCH 11/12] PM / devfreq: Remove exported opp_notifier function Date: Thu, 24 Aug 2017 10:42:58 +0900 Message-id: <1503538979-22693-12-git-send-email-cw00.choi@samsung.com> X-Mailer: git-send-email 1.8.0 In-reply-to: <1503538979-22693-1-git-send-email-cw00.choi@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrBKsWRmVeSWpSXmKPExsWy7bCmua6K/rxIg2OtuhYTb1xhsbj+5Tmr xaT7E1gszja9Ybe4vGsOm8Xn3iOMFrcbV7BZPF7xlt2Bw2PxnpdMHptWdbJ59G1ZxejxeZNc AEtUqk1GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4CuW2YO0BlK CmWJOaVAoYDE4mIlfTubovzSklSFjPziElulaENDIz1DA3M9IyMjPRPjWCsjU6CShNSMZ82T 2AuOGFV8mtHI2sD4WLOLkZNDQsBEouvPHCYIW0ziwr31bF2MXBxCAjsYJfY3P2KGcL4zSvw7 3ssM03HpxmEWiMQGRok9s14yQjg/GCVOTNjECFLFJqAlsf/FDTYQW0QgQKJz7SomkCJmgSag ufdusIMkhAW8JL7Mng5mswioSqxbcAtsBa+Am8TNb3ehjpKT+LDnEVgNJ1C85WkX2GoJgR42 idPtHSwQRS4S9y9vgbKFJV4d38IOYUtLPFu1kRGioZ1RYvOce1DdHYwS91c2skJUGUuc6moE W8cswCfRcfgvUDcHUJxXoqNNCKLEQ6J/4SloADhK7D30nRXi55mMEuvn7GObwCi9gJFhFaNY akFxbnpqsVGBkV5xYm5xaV66XnJ+7iZGcKrRctvBuOSczyFGAQ5GJR5ejSVzI4VYE8uKK3MP MUpwMCuJ8O5VnxcpxJuSWFmVWpQfX1Sak1p8iNEUGDoTmaVEk/OBaTCvJN7QxNLAxMzMyNzM Apg6xHnrtl2LEBJITyxJzU5NLUgtgulj4uCUamDcq/m8+ozpv/tGV0J21ly2etah1pJ9t+WE +vPONwIfuo6t/aXi0LLNQOVfSsCHCdP7WVdFmRnNPKeZmfV4elrNBIWLMnNsX964qOH6fXqP 4cQ1Tf7bW19G+U5hTzm3bY+z19XTEbvWxyQ1ZbyYv2Dq1EMHtxw66H29IP1E4fnrj9m3eC55 fPbsSiWW4oxEQy3mouJEAHr1P9dLAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFuplluLIzCtJLcpLzFFi42I5/e+xoK6K/rxIgwnzhSwm3rjCYnH9y3NW i0n3J7BYnG16w25xedccNovPvUcYLW43rmCzeLziLbsDh8fiPS+ZPDat6mTz6NuyitHj8ya5 AJYoLpuU1JzMstQifbsEroxnzZPYC44YVXya0cjawPhYs4uRk0NCwETi0o3DLF2MXBxCAusY Jfq3HWaEcH4wSuw4vo4dpIpNQEti/4sbbCC2iICfxPb568GKmAWaGCWW998CSwgLeEl8mT0d rIFFQFVi3YJbzCA2r4CbxM1vd5kg1slJfNjzCKyGEyje8rSLBcQWEnCV2NN3lHECI88CRoZV jJKpBcW56bnFRgVGeanlesWJucWleel6yfm5mxiBgbTtsFb/DsbHS+IPMQpwMCrx8F5YODdS iDWxrLgy9xCjBAezkgjvXvV5kUK8KYmVValF+fFFpTmpxYcYpTlYlMR5M/tmRAoJpCeWpGan phakFsFkmTg4pRoY+xe7ebx/+W7aqv9qdoqitoabay/ev9a8nHlOnNnqwtZamVWrKirX2L7a ceCW37O69wldmWvXHbH9YbdtrpfGX96Fr49y1x56xjfV8+vdwvle4j5Tzyz/Wr49/mhR4M8/ iwTzM4W9Eyc83JJ0MKzO4oWFg0NZT+x1Vq1o3698/0+erjIrZk3+psRSnJFoqMVcVJwIAL0w AX0gAgAA X-CMS-MailID: 20170824014300epcas2p27dfdc54aae8ea29e5e60425a87cf4aab X-Msg-Generator: CA X-Sender-IP: 182.195.42.143 X-Local-Sender: =?UTF-8?B?7LWc7LCs7JqwG1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbU2VuaW9yIEVuZ2luZWVy?= X-Global-Sender: =?UTF-8?B?Q2hhbndvbyBDaG9pG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtTZW5pb3IgRW5naW5lZXI=?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 102P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170824014300epcas2p27dfdc54aae8ea29e5e60425a87cf4aab X-RootMTR: 20170824014300epcas2p27dfdc54aae8ea29e5e60425a87cf4aab References: <1503538979-22693-1-git-send-email-cw00.choi@samsung.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 6279 Lines: 187 The devfreq provides the helper function to register the OPP notifier which is used to catch the change of OPP entry such as OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_DISABLE and OPP_EVENT_ENABLE. The OPP notifier is optional. But, the devfreq uses the OPP interface as a mandatory method to handle the frequency and voltage. If so, the OPP notifier is mandatory. So, the OPP notifier have to be handled in the devfreq core instead of each device driver. Signed-off-by: Chanwoo Choi --- drivers/devfreq/devfreq.c | 77 -------------------------------------------- drivers/devfreq/exynos-bus.c | 7 ---- drivers/devfreq/rk3399_dmc.c | 1 - include/linux/devfreq.h | 31 ------------------ 4 files changed, 116 deletions(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index 77eb3edf6bf3..7efa867e4aea 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -1344,83 +1344,6 @@ struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, EXPORT_SYMBOL(devfreq_recommended_opp); /** - * devfreq_register_opp_notifier() - Helper function to get devfreq notified - * for any changes in the OPP availability - * changes - * @dev: The devfreq user device. (parent of devfreq) - * @devfreq: The devfreq object. - */ -int devfreq_register_opp_notifier(struct device *dev, struct devfreq *devfreq) -{ - return dev_pm_opp_register_notifier(dev, &devfreq->nb); -} -EXPORT_SYMBOL(devfreq_register_opp_notifier); - -/** - * devfreq_unregister_opp_notifier() - Helper function to stop getting devfreq - * notified for any changes in the OPP - * availability changes anymore. - * @dev: The devfreq user device. (parent of devfreq) - * @devfreq: The devfreq object. - * - * At exit() callback of devfreq_dev_profile, this must be included if - * devfreq_recommended_opp is used. - */ -int devfreq_unregister_opp_notifier(struct device *dev, struct devfreq *devfreq) -{ - return dev_pm_opp_unregister_notifier(dev, &devfreq->nb); -} -EXPORT_SYMBOL(devfreq_unregister_opp_notifier); - -static void devm_devfreq_opp_release(struct device *dev, void *res) -{ - devfreq_unregister_opp_notifier(dev, *(struct devfreq **)res); -} - -/** - * devm_ devfreq_register_opp_notifier() - * - Resource-managed devfreq_register_opp_notifier() - * @dev: The devfreq user device. (parent of devfreq) - * @devfreq: The devfreq object. - */ -int devm_devfreq_register_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ - struct devfreq **ptr; - int ret; - - ptr = devres_alloc(devm_devfreq_opp_release, sizeof(*ptr), GFP_KERNEL); - if (!ptr) - return -ENOMEM; - - ret = devfreq_register_opp_notifier(dev, devfreq); - if (ret) { - devres_free(ptr); - return ret; - } - - *ptr = devfreq; - devres_add(dev, ptr); - - return 0; -} -EXPORT_SYMBOL(devm_devfreq_register_opp_notifier); - -/** - * devm_devfreq_unregister_opp_notifier() - * - Resource-managed devfreq_unregister_opp_notifier() - * @dev: The devfreq user device. (parent of devfreq) - * @devfreq: The devfreq object. - */ -void devm_devfreq_unregister_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ - WARN_ON(devres_release(dev, devm_devfreq_opp_release, - devm_devfreq_dev_match, devfreq)); -} -EXPORT_SYMBOL(devm_devfreq_unregister_opp_notifier); - -/** * devfreq_register_notifier() - Register a driver with devfreq * @devfreq: The devfreq object. * @nb: The notifier block to register. diff --git a/drivers/devfreq/exynos-bus.c b/drivers/devfreq/exynos-bus.c index 49f68929e024..a144d7ae066e 100644 --- a/drivers/devfreq/exynos-bus.c +++ b/drivers/devfreq/exynos-bus.c @@ -444,13 +444,6 @@ static int exynos_bus_probe(struct platform_device *pdev) goto err; } - /* Register opp_notifier to catch the change of OPP */ - ret = devm_devfreq_register_opp_notifier(dev, bus->devfreq); - if (ret < 0) { - dev_err(dev, "failed to register opp notifier\n"); - goto err; - } - /* * Enable devfreq-event to get raw data which is used to determine * current bus load. diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c index 1b89ebbad02c..4fb1041b628e 100644 --- a/drivers/devfreq/rk3399_dmc.c +++ b/drivers/devfreq/rk3399_dmc.c @@ -435,7 +435,6 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev) &data->ondemand_data); if (IS_ERR(data->devfreq)) return PTR_ERR(data->devfreq); - devm_devfreq_register_opp_notifier(dev, data->devfreq); data->dev = dev; platform_set_drvdata(pdev, data); diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 597294e0cc40..d6f054545799 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h @@ -189,14 +189,6 @@ extern void devm_devfreq_remove_device(struct device *dev, /* Helper functions for devfreq user device driver with OPP. */ extern struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, unsigned long *freq, u32 flags); -extern int devfreq_register_opp_notifier(struct device *dev, - struct devfreq *devfreq); -extern int devfreq_unregister_opp_notifier(struct device *dev, - struct devfreq *devfreq); -extern int devm_devfreq_register_opp_notifier(struct device *dev, - struct devfreq *devfreq); -extern void devm_devfreq_unregister_opp_notifier(struct device *dev, - struct devfreq *devfreq); extern int devfreq_register_notifier(struct devfreq *devfreq, struct notifier_block *nb, unsigned int list); @@ -310,29 +302,6 @@ static inline struct dev_pm_opp *devfreq_recommended_opp(struct device *dev, return ERR_PTR(-EINVAL); } -static inline int devfreq_register_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ - return -EINVAL; -} - -static inline int devfreq_unregister_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ - return -EINVAL; -} - -static inline int devm_devfreq_register_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ - return -EINVAL; -} - -static inline void devm_devfreq_unregister_opp_notifier(struct device *dev, - struct devfreq *devfreq) -{ -} - static inline int devfreq_register_notifier(struct devfreq *devfreq, struct notifier_block *nb, unsigned int list) -- 1.9.1