linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ti.com>
To: Andrey Smirnov <andrew.smirnov@gmail.com>,
	<dri-devel@lists.freedesktop.org>
Cc: Archit Taneja <architt@codeaurora.org>,
	Andrzej Hajda <a.hajda@samsung.com>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Andrey Gusakov <andrey.gusakov@cogentembedded.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Chris Healy <cphealy@gmail.com>,
	Lucas Stach <l.stach@pengutronix.de>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 07/15] drm/bridge: tc358767: Simplify AUX data write
Date: Fri, 22 Mar 2019 12:51:31 +0200	[thread overview]
Message-ID: <25d95ed0-4dba-09d5-87ec-57c5e763beb4@ti.com> (raw)
In-Reply-To: <20190322032901.12045-8-andrew.smirnov@gmail.com>

On 22/03/2019 05:28, Andrey Smirnov wrote:
> Simplify AUX data write by dropping index arithmetic and shifting and
> replacing it with a call to a helper function that does three things:
> 
>     1. Copies user-provided data into a write buffer
>     2. Optionally fixes the endianness of the write buffer (not needed
>        on LE hosts)
>     3. Transfers contenst of the write buffer to up to 4 32-bit
>        registers on the chip
> 
> Note that separate data endianness fix:
> 
>     tmp = (tmp << 8) | buf[i];
> 
> that was reserved for DP_AUX_I2C_WRITE looks really strange, since it
> will place data differently depending on the passed user-data
> size. E.g. for a write of 1 byte, data transferred to the chip would
> look like:
> 
> [byte0] [dummy1] [dummy2] [dummy3]
> 
> whereas for a write of 4 bytes we'd get:
> 
> [byte3] [byte2] [byte1] [byte0]
> 
> Since there's no indication in the datasheet that I2C write buffer
> should be treated differently than AUX write buffer and no comment in
> the original code explaining why it was done this way, that special
> I2C write buffer transformation was dropped in this patch.
> 
> Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
> Cc: Archit Taneja <architt@codeaurora.org>
> Cc: Andrzej Hajda <a.hajda@samsung.com>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
> Cc: Andrey Gusakov <andrey.gusakov@cogentembedded.com>
> Cc: Philipp Zabel <p.zabel@pengutronix.de>
> Cc: Chris Healy <cphealy@gmail.com>
> Cc: Lucas Stach <l.stach@pengutronix.de>
> Cc: dri-devel@lists.freedesktop.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/gpu/drm/bridge/tc358767.c | 58 +++++++++++++++++++------------
>  1 file changed, 36 insertions(+), 22 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
> index 81c10a5d8106..21374565585d 100644
> --- a/drivers/gpu/drm/bridge/tc358767.c
> +++ b/drivers/gpu/drm/bridge/tc358767.c
> @@ -307,6 +307,31 @@ static int tc_aux_get_status(struct tc_data *tc, u8 *reply)
>  	return 0;
>  }
>  
> +static int tc_aux_write_data(struct tc_data *tc, const void *data,
> +			     size_t size)
> +{
> +	u32 auxwdata[DP_AUX_MAX_PAYLOAD_BYTES / sizeof(u32)] = { 0 };
> +	int ret, i, count = DIV_ROUND_UP(size, 4);

Should 4 there be sizeof(u32)?

> +
> +	memcpy(auxwdata, data, size);
> +
> +	for (i = 0; i < count; i++) {
> +		ret = regmap_write(tc->regmap, DP0_AUXWDATA(i),
> +				   /*
> +				    * Our regmap is configured as LE
> +				    * for register data, so we need
> +				    * undo any byte swapping that will
> +				    * happened to preserve original
> +				    * byte order.
> +				    */
> +				   cpu_to_le32(auxwdata[i]));

Can regmap_bulk_write or regmap_raw_write be used here?

 Tomi

-- 
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki

  reply	other threads:[~2019-03-22 10:51 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-22  3:28 [PATCH v2 00/15] tc358767 driver improvements Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 01/15] drm/bridge: tc358767: Simplify tc_poll_timeout() Andrey Smirnov
2019-03-22 10:12   ` Tomi Valkeinen
2019-03-22  3:28 ` [PATCH v2 02/15] drm/bridge: tc358767: Simplify polling in tc_main_link_setup() Andrey Smirnov
2019-03-22 10:13   ` Tomi Valkeinen
2019-03-22  3:28 ` [PATCH v2 03/15] drm/bridge: tc358767: Simplify polling in tc_link_training() Andrey Smirnov
2019-03-22 10:14   ` Tomi Valkeinen
2019-03-22  3:28 ` [PATCH v2 04/15] drm/bridge: tc358767: Simplify tc_set_video_mode() Andrey Smirnov
2019-03-22 10:19   ` Tomi Valkeinen
2019-03-22 17:24     ` Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 05/15] drm/bridge: tc358767: Drop custom tc_write()/tc_read() accessors Andrey Smirnov
2019-03-22 10:29   ` Tomi Valkeinen
2019-03-22 17:45     ` Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 07/15] drm/bridge: tc358767: Simplify AUX data write Andrey Smirnov
2019-03-22 10:51   ` Tomi Valkeinen [this message]
2019-03-22 17:25     ` Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 08/15] drm/bridge: tc358767: Increase AUX transfer length limit Andrey Smirnov
2019-03-22 13:14   ` Tomi Valkeinen
2019-03-22 19:01     ` Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 09/15] drm/bridge: tc358767: Use reported AUX transfer size Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 10/15] drm/bridge: tc358767: Add support for address-only I2C transfers Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 11/15] drm/bridge: tc358767: Introduce tc_set_syspllparam() Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 12/15] drm/bridge: tc358767: Introduce tc_pllupdate_pllen() Andrey Smirnov
2019-03-22  3:28 ` [PATCH v2 13/15] drm/bridge: tc358767: Simplify tc_aux_wait_busy() Andrey Smirnov
2019-03-22  3:29 ` [PATCH v2 14/15] drm/bridge: tc358767: Drop unnecessary 8 byte buffer Andrey Smirnov
2019-03-22  3:29 ` [PATCH v2 15/15] drm/bridge: tc358767: Replace magic number in tc_main_link_enable() Andrey Smirnov
2019-03-22  8:05 ` [PATCH v2 00/15] tc358767 driver improvements Tomi Valkeinen
2019-03-22 19:25   ` Andrey Smirnov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=25d95ed0-4dba-09d5-87ec-57c5e763beb4@ti.com \
    --to=tomi.valkeinen@ti.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=a.hajda@samsung.com \
    --cc=andrew.smirnov@gmail.com \
    --cc=andrey.gusakov@cogentembedded.com \
    --cc=architt@codeaurora.org \
    --cc=cphealy@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=l.stach@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).