lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ