diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index abce67b26bfe..f6990f1df586 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -186,6 +186,12 @@ void rockchip_dmcfreq_lock(void) } EXPORT_SYMBOL(rockchip_dmcfreq_lock); +void rockchip_dmcfreq_lock_nested(void) +{ + down_read_nested(&rockchip_dmcfreq_sem, SINGLE_DEPTH_NESTING); +} +EXPORT_SYMBOL(rockchip_dmcfreq_lock_nested); + void rockchip_dmcfreq_unlock(void) { up_read(&rockchip_dmcfreq_sem); diff --git a/include/soc/rockchip/rockchip_dmc.h b/include/soc/rockchip/rockchip_dmc.h index a73d30240172..b2a74003bd3c 100644 --- a/include/soc/rockchip/rockchip_dmc.h +++ b/include/soc/rockchip/rockchip_dmc.h @@ -33,6 +33,7 @@ #ifdef CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ void rockchip_dmcfreq_lock(void); +void rockchip_dmcfreq_lock_nested(void); void rockchip_dmcfreq_unlock(void); int rockchip_dmcfreq_wait_complete(void); int rockchip_dmcfreq_vop_bandwidth_request(struct devfreq *devfreq, @@ -46,6 +47,10 @@ static inline void rockchip_dmcfreq_lock(void) { } +static inline void rockchip_dmcfreq_lock_nested(void) +{ +} + static inline void rockchip_dmcfreq_unlock(void) { }