diff --git a/drivers/video/rockchip/mpp/mpp_rkvdec2.c b/drivers/video/rockchip/mpp/mpp_rkvdec2.c index a463fc2eeccc..decd5e25c252 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvdec2.c +++ b/drivers/video/rockchip/mpp/mpp_rkvdec2.c @@ -816,13 +816,14 @@ static struct devfreq_governor devfreq_vdec2_ondemand = { static unsigned long rkvdec2_get_static_power(struct devfreq *devfreq, unsigned long voltage) { - struct rkvdec2_dev *dec = devfreq->data; + struct device *dev = devfreq->dev.parent; + struct mpp_dev *mpp = dev_get_drvdata(dev); + struct rkvdec2_dev *dec = to_rkvdec2_dev(mpp); - if (!dec->model_data) + if (!dec || !dec->model_data) return 0; - else - return rockchip_ipa_get_static_power(dec->model_data, - voltage); + + return rockchip_ipa_get_static_power(dec->model_data, voltage); } static struct devfreq_cooling_power vdec2_cooling_power_data = { diff --git a/drivers/video/rockchip/mpp/mpp_rkvenc.c b/drivers/video/rockchip/mpp/mpp_rkvenc.c index c71c03fb91eb..624d15e6783b 100644 --- a/drivers/video/rockchip/mpp/mpp_rkvenc.c +++ b/drivers/video/rockchip/mpp/mpp_rkvenc.c @@ -955,13 +955,14 @@ static struct devfreq_governor devfreq_venc_ondemand = { static unsigned long rkvenc_get_static_power(struct devfreq *devfreq, unsigned long voltage) { - struct rkvenc_dev *enc = devfreq->data; + struct device *dev = devfreq->dev.parent; + struct mpp_dev *mpp = dev_get_drvdata(dev); + struct rkvenc_dev *enc = to_rkvenc_dev(mpp); - if (!enc->model_data) + if (!enc || !enc->model_data) return 0; - else - return rockchip_ipa_get_static_power(enc->model_data, - voltage); + + return rockchip_ipa_get_static_power(enc->model_data, voltage); } static struct devfreq_cooling_power venc_cooling_power_data = {