Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965252AbbLRUs2 (ORCPT ); Fri, 18 Dec 2015 15:48:28 -0500 Received: from down.free-electrons.com ([37.187.137.238]:36110 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S933011AbbLRUsP (ORCPT ); Fri, 18 Dec 2015 15:48:15 -0500 Date: Fri, 18 Dec 2015 12:16:27 +0100 From: Maxime Ripard To: Marcus Weseloh Cc: linux-sunxi@googlegroups.com, Chen-Yu Tsai , devicetree@vger.kernel.org, Ian Campbell , Kumar Gala , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org, Mark Brown , Mark Rutland , Pawel Moll , Rob Herring Subject: Re: [PATCH v5 2/2] spi: sun4i: Add support for wait time between word transmissions Message-ID: <20151218111627.GM30359@lukather> References: <1450352427-25350-1-git-send-email-mweseloh42@gmail.com> <1450352427-25350-3-git-send-email-mweseloh42@gmail.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="XbHSybK3LHOYQtWI" Content-Disposition: inline In-Reply-To: <1450352427-25350-3-git-send-email-mweseloh42@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3287 Lines: 98 --XbHSybK3LHOYQtWI Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, On Thu, Dec 17, 2015 at 12:40:27PM +0100, Marcus Weseloh wrote: > Modifies the sun4i SPI master driver to make use of the > "spi-word-wait-ns" property. This specific SPI controller needs 3 clock > cycles to set up the delay, which makes the minimum non-zero wait time > on this hardware 4 clock cycles. >=20 > Signed-off-by: Marcus Weseloh > --- > drivers/spi/spi-sun4i.c | 22 ++++++++++++++++++++++ > 1 file changed, 22 insertions(+) >=20 > diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c > index f60a6d6..3b4f5f4 100644 > --- a/drivers/spi/spi-sun4i.c > +++ b/drivers/spi/spi-sun4i.c > @@ -19,6 +19,7 @@ > #include > #include > #include > +#include > =20 > #include > =20 > @@ -173,6 +174,8 @@ static int sun4i_spi_transfer_one(struct spi_master *= master, > unsigned int tx_len =3D 0; > int ret =3D 0; > u32 reg; > + int wait_clk =3D 0; > + int clk_ns =3D 0; > =20 > /* We don't support transfer larger than the FIFO */ > if (tfr->len > SUN4I_FIFO_DEPTH) > @@ -261,6 +264,25 @@ static int sun4i_spi_transfer_one(struct spi_master = *master, > =20 > sun4i_spi_write(sspi, SUN4I_CLK_CTL_REG, reg); > =20 > + /* > + * Setup wait time between words. > + * > + * Wait time is set in SPI_CLK cycles. The SPI hardware needs 3 > + * additional cycles to setup the wait counter, so the minimum delay > + * time is 4 cycles. > + */ > + if (spi->word_wait_ns) { > + clk_ns =3D DIV_ROUND_UP(1000000000, tfr->speed_hz); You should use the actual rate of the clock returned by clk_get_rate (or probably just use mclk_rate). The clock driver might round the frequency to something else than what was set in clk_set_rate, which would make your calculation here a bit off. Maxime --=20 Maxime Ripard, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com --XbHSybK3LHOYQtWI Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJWc+sLAAoJEBx+YmzsjxAgiBsQAI+0fqdEwgAmSYe2Ex+hW8Ff nonnodsxTW2b/qJdCtdNZV3U8+2WQJa7I9BClEnZ9DpjuIF1ezaoq1D1sqG0iLl9 u2C/SONfcF6JeOTs2hQ9aqneYVBERaDcdJleo/oWxvMrTvvekANpdJqkU4Av31dj uL/hsUevRCALzAnNGX3NKIwjbbKXdyKxMMVcjlNEEjx1tGqXQQWmD4ZEmO/9dAdk fLrVvdpwehU7JBLvC24I3+rjfsasDziXC0jzN3ES92KRrTr7AbK/rye87riVWjvI NVlG58Oq7tWyqqY3kQerRjW4edVzx/t2IlcQy06mD5WqpsaNlYOWTkv7f/KpruF2 sU0C/fStelFDinjBhKkFv0/Or31KC1e7sAJ4O1e7DJVfWCoDFOBq8UCXkCLmKaBK Uwe0OqDyC2/NhKG0QvJzTqXqVnn9ic/JBlJP1P3fMKDbpvLWTB1ZweNRjKaWeTwG NXrkWXc/XUZivIOsN5YBpnkfs64GiZIQfUnyxEbhdYrKy1VPhIS4aP3yOT9LWvVN VKYeeRIwzUKUSNDxkbPZK2g1D9IsbVP4QPHJjerJCPvz2QqYniBrlXuxvi1U+wrO XZpXSIwEjlwl8fYddq6l1l55JW/TrYShiniTch6tYRIqRLDjerm/F3OLrfUpgYVU NE+N+Qz6nWpCgqYEKY6w =WHej -----END PGP SIGNATURE----- --XbHSybK3LHOYQtWI-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/