diff options
Diffstat (limited to 'drivers/clk/clk.c')
| -rw-r--r-- | drivers/clk/clk.c | 29 | 
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index 3f588ed06ce3..4d455a657b01 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -3039,6 +3039,31 @@ static int clk_rate_set(void *data, u64 val)  }  #define clk_rate_mode	0644 + +static int clk_prepare_enable_set(void *data, u64 val) +{ +	struct clk_core *core = data; +	int ret = 0; + +	if (val) +		ret = clk_prepare_enable(core->hw->clk); +	else +		clk_disable_unprepare(core->hw->clk); + +	return ret; +} + +static int clk_prepare_enable_get(void *data, u64 *val) +{ +	struct clk_core *core = data; + +	*val = core->enable_count && core->prepare_count; +	return 0; +} + +DEFINE_DEBUGFS_ATTRIBUTE(clk_prepare_enable_fops, clk_prepare_enable_get, +			 clk_prepare_enable_set, "%llu\n"); +  #else  #define clk_rate_set	NULL  #define clk_rate_mode	0444 @@ -3216,6 +3241,10 @@ static void clk_debug_create_one(struct clk_core *core, struct dentry *pdentry)  	debugfs_create_u32("clk_notifier_count", 0444, root, &core->notifier_count);  	debugfs_create_file("clk_duty_cycle", 0444, root, core,  			    &clk_duty_cycle_fops); +#ifdef CLOCK_ALLOW_WRITE_DEBUGFS +	debugfs_create_file("clk_prepare_enable", 0644, root, core, +			    &clk_prepare_enable_fops); +#endif  	if (core->num_parents > 0)  		debugfs_create_file("clk_parent", 0444, root, core,  |