On Thu 24 Dec 05:12 CST 2020, Roja Rani Yarubandi wrote:

> @@ -629,6 +658,16 @@ static int __maybe_unused 
> geni_i2c_runtime_suspend(struct device *dev)
>       struct geni_i2c_dev *gi2c = dev_get_drvdata(dev);
>  
>       disable_irq(gi2c->irq);
> +
> +     /* Drop the assigned performance state */
> +     if (gi2c->assigned_pstate) {
> +             ret = dev_pm_genpd_set_performance_state(dev, 0);
> +             if (ret) {
> +                     dev_err(dev, "Failed to set performance state\n");
> +                     return ret;
> +             }
> +     }
> +

Ulf, Viresh, I think we discussed this at the time of introducing the
performance states.

The client's state does not affect if its performance_state should
be included in the calculation of the aggregated performance_state, so
each driver that needs to keep some minimum performance state needs to
have these two snippets.

Would it not make sense to on enable/disable re-evaluate the
performance_state and potentially reconfigure the hardware
automatically?

Regards,
Bjorn

>       ret = geni_se_resources_off(&gi2c->se);
>       if (ret) {
>               enable_irq(gi2c->irq);
> @@ -654,6 +693,16 @@ static int __maybe_unused geni_i2c_runtime_resume(struct 
> device *dev)
>       if (ret)
>               return ret;
>  
> +     /* Set the assigned performance state */
> +     if (gi2c->assigned_pstate) {
> +             ret = dev_pm_genpd_set_performance_state(dev,
> +                                                      gi2c->assigned_pstate);
> +             if (ret) {
> +                     dev_err(dev, "Failed to set performance state\n");
> +                     return ret;
> +             }
> +     }
> +
>       enable_irq(gi2c->irq);
>       gi2c->suspended = 0;
>       return 0;
> -- 
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member 
> of Code Aurora Forum, hosted by The Linux Foundation
> 

Reply via email to