>   
>  This patch initialize the freq_table array of each devfreq device by using
> the devfreq_set_freq_table(). If freq_table is NULL, the devfreq framework
> is not able to support the frequency transtion information through sysfs.
> 
> The OPP core uses the integer type for the number of opps in the opp list
> and uses the 'unsigned long' type for each frequency. So, this patch modifies
> the type of some variable as following:
> - the type of freq_table : unsigned int -> unsigned long
> - the type of max_state  : unsigned int -> int
> 
> Signed-off-by: Chanwoo Choi <[email protected]>
[]
> +/**
>   * devfreq_update_status() - Update statistics of devfreq behavior
>   * @devfreq: the devfreq instance
>   * @freq:    the update target frequency
> @@ -477,7 +516,12 @@ struct devfreq *devfreq_add_device(struct device *dev,
>       devfreq->previous_freq = profile->initial_freq;
>       devfreq->data = data;
>       devfreq->nb.notifier_call = devfreq_notifier_call;
> +     mutex_unlock(&devfreq->lock);
>  
> +     if (devfreq->profile->max_state <= 0 && !devfreq->profile->freq_table)
> +             devfreq_set_freq_table(devfreq);
> +
> +     mutex_lock(&devfreq->lock);

Anyway, what about modifying the block above as:

+       if (!devfreq->profile->max_state && !devfreq->profile->freq_table) {
+               mutex_unlock(&devfreq->lock);
                devfreq_set_freq_table(devfreq);
+               mutex_lock(&devfreq->lock);
+       }

>       devfreq->trans_table =  devm_kzalloc(dev, sizeof(unsigned int) *
>                                               devfreq->profile->max_state *
>                                               devfreq->profile->max_state,
[]

If that's not a problem, I'll squash
https://git.kernel.org/cgit/linux/kernel/git/mzx/devfreq.git/commit/?h=for-rafael&id=55df2b43cdb5ac82d26b64d739f3d758c9b7486c
with the given patch.

Reply via email to