25.03.2015 11:59, Tomeu Vizoso пишет:
> As there isn't a way for the firmware on the Nyan chromebooks to hand
> over the display to the kernel, and the kernel isn't redoing the whole
> configuration at present.
>
> With this patch, the SOR is brought to a known state and we get correct
> display on every boot.
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso at collabora.com>
>
> ---
>
> v7:   * Move the reset to the host1x_client_ops.init callback as
>       suggested by Thierry
>       * Reduced the time during which the reset line is asserted from
>       20ms to 2ms
> ---
>   drivers/gpu/drm/tegra/sor.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/tegra/sor.c b/drivers/gpu/drm/tegra/sor.c
> index 2afe478..027a25d22 100644
> --- a/drivers/gpu/drm/tegra/sor.c
> +++ b/drivers/gpu/drm/tegra/sor.c
> @@ -1354,12 +1354,30 @@ static int tegra_sor_init(struct host1x_client 
> *client)
>               }
>       }
>
> +     /*
> +      * XXX: Remove this reset once proper hand-over from firmware to
> +      * kernel is possible.
> +      */
> +     err = reset_control_assert(sor->rst);
> +     if (err < 0) {
> +             dev_err(sor->dev, "failed to assert SOR reset: %d\n", err);
> +             return err;
> +     }
> +
>       err = clk_prepare_enable(sor->clk);
>       if (err < 0) {
>               dev_err(sor->dev, "failed to enable clock: %d\n", err);
>               return err;
>       }
>
> +     msleep(2);
> +
> +     err = reset_control_deassert(sor->rst);
> +     if (err < 0) {
> +             dev_err(sor->dev, "failed to deassert SOR reset: %d\n", err);
> +             return err;
> +     }
> +
>       err = clk_prepare_enable(sor->clk_safe);
>       if (err < 0)
>               return err;
>

According to kernel doc, you should use usleep_range() instead of msleep().

https://www.kernel.org/doc/Documentation/timers/timers-howto.txt

-- 
Dmitry

Reply via email to