[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <5513D049.4080700@gmail.com>
Date: Thu, 26 Mar 2015 12:24:25 +0300
From: Dmitry Osipenko <digetx@...il.com>
To: Tomeu Vizoso <tomeu.vizoso@...labora.com>,
linux-tegra@...r.kernel.org
CC: Thierry Reding <thierry.reding@...il.com>,
Terje Bergström
<tbergstrom@...dia.com>, David Airlie <airlied@...ux.ie>,
Stephen Warren <swarren@...dotorg.org>,
Alexandre Courbot <gnurou@...il.com>,
dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] drm/tegra: Reset the SOR during initialization
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@...labora.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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists