All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrzej Hajda <a.hajda@samsung.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/15] drm/dsi: Implement generic read and write commands
Date: Wed, 15 Oct 2014 15:32:10 +0200	[thread overview]
Message-ID: <543E775A.80800@samsung.com> (raw)
In-Reply-To: <20141014100331.GF18993@ulmo>

On 10/14/2014 12:03 PM, Thierry Reding wrote:
> On Tue, Oct 14, 2014 at 10:59:26AM +0200, Andrzej Hajda wrote:
>> On 10/13/2014 12:16 PM, Thierry Reding wrote:
>>> From: Thierry Reding <treding@nvidia.com>
>>>
>>> Implement generic read and write commands. Selection of the proper data
>>> type for packets is done automatically based on the number of parameters
>>> or payload length.
>>>
>>> Signed-off-by: Thierry Reding <treding@nvidia.com>
>>> ---
>>>  drivers/gpu/drm/drm_mipi_dsi.c | 115 +++++++++++++++++++++++++++++++++++++++++
>>>  include/drm/drm_mipi_dsi.h     |   6 +++
>>>  2 files changed, 121 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/drm_mipi_dsi.c b/drivers/gpu/drm/drm_mipi_dsi.c
>>> index 27fc6dac5e4a..7cd69273dbad 100644
>>> --- a/drivers/gpu/drm/drm_mipi_dsi.c
>>> +++ b/drivers/gpu/drm/drm_mipi_dsi.c
>>> @@ -229,6 +229,121 @@ int mipi_dsi_set_maximum_return_packet_size(struct mipi_dsi_device *dsi,
>>>  EXPORT_SYMBOL(mipi_dsi_set_maximum_return_packet_size);
>>>  
>>>  /**
>>> + * mipi_dsi_generic_write() - transmit data using a generic write packet
>>> + * @dsi: DSI peripheral device
>>> + * @payload: buffer containing the payload
>>> + * @size: size of payload buffer
>>> + *
>>> + * This function will automatically choose the right data type depending on
>>> + * the payload length.
>>> + *
>>> + * Return: The number of bytes transmitted on success or a negative error code
>>> + * on failure.
>>> + */
>>> +ssize_t mipi_dsi_generic_write(struct mipi_dsi_device *dsi, const void *payload,
>>> +			       size_t size)
>>> +{
>>> +	struct mipi_dsi_msg msg;
>>> +	ssize_t err;
>>> +	u8 *tx;
>>> +
>>> +	memset(&msg, 0, sizeof(msg));
>>> +	msg.channel = dsi->channel;
>> Again, maybe initializer would be better.
> Why?
>
>>> +	msg.flags = MIPI_DSI_MSG_USE_LPM | MIPI_DSI_MSG_REQ_ACK;
>>
>> You should not hardcode flags here, these flags have nothing to do with
>> dsi generic write.
> Agreed, these seem to be left-over from debugging that I overlooked when
> squashing together various patches.
>
>> But there is general problem of encoding flags in
>> helpers. Possible solutions I see:
>> 1. Translate DSI flags to msg flags as in case of MIPI_DSI_MODE_LPM ->
>> MIPI_DSI_MSG_USE_LPM.
> That's how it was originally intended. The DSI device's flags would be
> used to derive message flags, yet wouldn't be an exact copy because not
> all flags are relevant to message transfers.

OK

>
> There's a bit of an inconsistency here, though. MIPI_DSI_MODE_LPM isn't
> very clearly defined. It says:
>
> 	/* transmit data in low power */
> 	#define MIPI_DSI_MODE_LPM	BIT(11)
>
> Whereas:
>
> 	/* use Low Power Mode to transmit message */
> 	#define MIPI_DSI_MSG_USE_LPM	BIT(1)
>
> Currently we assume that data == message in the above. However
> MIPI_DSI_MODE_LPM could also mean that video data is supposed to be
> transmitted in low-power mode.
>
> I vaguely remember discussing this with you and Inki (?) before in the
> context of continuous vs. non-continuous clocks, but there didn't seem
> to be any final outcome on that discussion.

According to specs "Video
information should only be transmitted using High Speed Mode"[1],
but there is still command mode. Anyway it would be good to clarify
that it is only for messages.

[1]: DSI spec 1.2a chapter 4.2.2 Video Mode Operation

>
> According to the specification, version 1.02.00, section 5.2, "The
> peripheral shall be capable of receiving any transmission in Low Power
> or High Speed Mode." That would indicate that MIPI_DSI_MSG_USE_LPM is
> completely unnecessary, unless a device isn't compliant with the spec.

Toshiba bridge TC358764 can be controlled only using LPM commands.
IIRC the panel Inki was working on also requires initialization using
only LPM.
Also your patch "Always use LPM" suggests that you also have
non-compliant devices.

Regards
Andrzej

  reply	other threads:[~2014-10-15 13:32 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-13 10:16 [PATCH v2 01/15] drm/dsi: Make mipi_dsi_dcs_{read, write}() symmetrical Thierry Reding
2014-10-13 10:16 ` [PATCH 02/15] drm/dsi: Constify mipi_dsi_msg Thierry Reding
2014-10-13 13:41   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 03/15] drm/dsi: Add mipi_dsi_set_maximum_return_packet_size() helper Thierry Reding
2014-10-13 14:10   ` Andrzej Hajda
2014-10-14  9:05     ` Thierry Reding
2014-10-13 14:23   ` Andrzej Hajda
2014-10-14  9:31     ` Thierry Reding
2014-10-13 10:16 ` [PATCH 04/15] drm/panel: s6e8aa0: Use standard MIPI DSI function Thierry Reding
2014-10-13 14:13   ` Andrzej Hajda
2014-10-14  9:46     ` Thierry Reding
2014-10-13 10:16 ` [PATCH 05/15] drm/dsi: Implement generic read and write commands Thierry Reding
2014-10-14  8:59   ` Andrzej Hajda
2014-10-14 10:03     ` Thierry Reding
2014-10-15 13:32       ` Andrzej Hajda [this message]
2014-10-13 10:16 ` [PATCH 06/15] drm/dsi: Implement some standard DCS commands Thierry Reding
2014-10-21  8:36   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 07/15] drm/dsi: Add to DocBook documentation Thierry Reding
2014-10-21  9:26   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 08/15] drm/dsi: Implement DCS nop command Thierry Reding
2014-10-21  9:53   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 09/15] drm/dsi: Implement DCS soft_reset command Thierry Reding
2014-10-13 10:16 ` [PATCH 10/15] drm/dsi: Implement DCS get_power_mode command Thierry Reding
2014-10-21  9:48   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 11/15] drm/dsi: Implement DCS {get,set}_pixel_format commands Thierry Reding
2014-10-13 10:16 ` [PATCH 12/15] drm/dsi: Implement DCS set_{column, page}_address commands Thierry Reding
2014-10-13 10:16 ` [PATCH 13/15] drm/dsi: Always use low-power mode for DCS commands Thierry Reding
2014-10-16  7:00   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 14/15] drm/dsi: Resolve MIPI DSI device from phandle Thierry Reding
2014-10-16  7:03   ` Andrzej Hajda
2014-10-13 10:16 ` [PATCH 15/15] drm/panel: Add Sharp LQ101R1SX01 support Thierry Reding
2014-10-20 15:56   ` Andrzej Hajda
2014-10-31 14:28     ` Thierry Reding
2014-10-13 12:29 ` [PATCH v2 01/15] drm/dsi: Make mipi_dsi_dcs_{read,write}() symmetrical Andrzej Hajda
2014-10-14  9:00   ` Thierry Reding
2014-10-21 11:10     ` Andrzej Hajda
2014-10-21 11:19       ` Andrzej Hajda
2014-10-14  8:00 ` [PATCH v2 01/15] drm/dsi: Make mipi_dsi_dcs_{read, write}() symmetrical Andrzej Hajda
2014-10-14  9:44   ` Thierry Reding
2014-10-14 10:38     ` Andrzej Hajda
2014-10-14 10:57       ` Thierry Reding
2014-10-14 11:13         ` Thierry Reding
2014-10-14 11:47           ` Thierry Reding
2014-10-14 11:25         ` Andrzej Hajda
2014-10-14 11:29           ` Thierry Reding
2014-10-14 13:53             ` Andrzej Hajda
2014-10-14 14:16               ` Thierry Reding
2014-10-15 11:01                 ` Andrzej Hajda
2014-10-15 11:11                   ` Thierry Reding
2014-10-15 11:22                     ` Andrzej Hajda
2014-10-14 10:59     ` Andrzej Hajda

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=543E775A.80800@samsung.com \
    --to=a.hajda@samsung.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=thierry.reding@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.