All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Kamil Debski <kamil@wypas.org>
Cc: linux-samsung-soc@vger.kernel.org,
	Russell King - ARM Linux <linux@arm.linux.org.uk>,
	sean@mess.org, Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	lars@opdenkamp.eu, dri-devel@lists.freedesktop.org,
	Hans Verkuil <hansverk@cisco.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Hans Verkuil <hans.verkuil@cisco.com>,
	thomas@tommie-lie.de, linux-input@vger.kernel.org,
	linux-media@vger.kernel.org,
	Marek Szyprowski <m.szyprowski@samsung.com>
Subject: Re: [PATCHv9 14/15] cec: s5p-cec: Add s5p-cec driver
Date: Mon, 12 Oct 2015 14:39:42 +0200	[thread overview]
Message-ID: <561BAA0E.4040905@xs4all.nl> (raw)
In-Reply-To: <CAP3TMiFj47GMYEqnNTXQv3vKbwnDGKhRDcMrwTY42RVUH-_d4Q@mail.gmail.com>

On 10/12/2015 02:33 PM, Kamil Debski wrote:
> Hi,
> 
> On 12 October 2015 at 12:50, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> On 10/06/2015 12:32 AM, Russell King - ARM Linux wrote:
>>> On Mon, Sep 07, 2015 at 03:44:43PM +0200, Hans Verkuil wrote:
>>>> +    if (status & CEC_STATUS_TX_DONE) {
>>>> +            if (status & CEC_STATUS_TX_ERROR) {
>>>> +                    dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n");
>>>> +                    cec->tx = STATE_ERROR;
>>>> +            } else {
>>>> +                    dev_dbg(cec->dev, "CEC_STATUS_TX_DONE\n");
>>>> +                    cec->tx = STATE_DONE;
>>>> +            }
>>>> +            s5p_clr_pending_tx(cec);
>>>> +    }
>>>
>>> Your CEC implementation seems to be written around the idea that there
>>> are only two possible outcomes from a CEC message - "done" and "error",
>>> which get translated to:
>>
>> This code is for the Samsung exynos CEC implementation. Marek, is this all
>> that the exynos CEC hardware returns?
> 
> The possible status values that are implemented in the CEC framework
> are following:
> 
> +/* cec status field */
> +#define CEC_TX_STATUS_OK               (0)
> +#define CEC_TX_STATUS_ARB_LOST         (1 << 0)
> +#define CEC_TX_STATUS_RETRY_TIMEOUT    (1 << 1)
> +#define CEC_TX_STATUS_FEATURE_ABORT    (1 << 2)
> +#define CEC_TX_STATUS_REPLY_TIMEOUT    (1 << 3)
> +#define CEC_RX_STATUS_READY            (0)
> 
> The only two ones I could match with the Exynos CEC module status bits are
> CEC_TX_STATUS_OK and  CEC_TX_STATUS_RETRY_TIMEOUT.
> 
> The status bits in Exynos HW are:
> - Tx_Error
> - Tx_Done
> - Tx_Transferring
> - Tx_Running
> - Tx_Bytes_Transferred
> 
> - Tx_Wait
> - Tx_Sending_Status_Bit
> - Tx_Sending_Hdr_Blk
> - Tx_Sending_Data_Blk
> - Tx_Latest_Initiator
> 
> - Tx_Wait_SFT_Succ
> - Tx_Wait_SFT_New
> - Tx_Wait_SFT_Retran
> - Tx_Retrans_Cnt
> - Tx_ACK_Failed

So are these all intermediate states? And every transfer always ends with Tx_Done or
Tx_Error state?

It does look that way...

Regards,

	Hans

> 
>>
>>>
>>>> +    case STATE_DONE:
>>>> +            cec_transmit_done(cec->adap, CEC_TX_STATUS_OK);
>>>> +            cec->tx = STATE_IDLE;
>>>> +            break;
>>>> +    case STATE_ERROR:
>>>> +            cec_transmit_done(cec->adap, CEC_TX_STATUS_RETRY_TIMEOUT);
>>>> +            cec->tx = STATE_IDLE;
>>>
>>> "okay" and "retry_timeout".  So, if we have an adapter which can report
>>> (eg) a NACK, we have to report it as the obscure "retry timeout" status?
>>> Why this obscure naming - why can't we have something that uses the
>>> terminology in the spec?
>>>
>>
>> Actually, a NACK should lead to a re-transmission (up to 5 times), see CEC 7.1.
>> The assumption of the CEC framework is that this is done by the CEC adapter
>> driver, not by the framework. So if after repeated retransmissions there is
>> still no Ack, the CEC_TX_STATUS_RETRY_TIMEOUT error is returned. I could
>> change this to _MAX_RETRIES_REACHED if you prefer.
>>
>> The CEC_TX_STATUS_ macros were based on what the adv drivers support (except
>> for CEC_TX_STATUS_REPLY_TIMEOUT which is specific to the framework).
>>
>> Regards,
>>
>>         Hans
> 
> Best wishes,
> Kamil
> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Hans Verkuil <hverkuil@xs4all.nl>
To: Kamil Debski <kamil@wypas.org>
Cc: Russell King - ARM Linux <linux@arm.linux.org.uk>,
	Hans Verkuil <hansverk@cisco.com>,
	linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	thomas@tommie-lie.de, sean@mess.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	linux-input@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	lars@opdenkamp.eu, Hans Verkuil <hans.verkuil@cisco.com>
Subject: Re: [PATCHv9 14/15] cec: s5p-cec: Add s5p-cec driver
Date: Mon, 12 Oct 2015 14:39:42 +0200	[thread overview]
Message-ID: <561BAA0E.4040905@xs4all.nl> (raw)
In-Reply-To: <CAP3TMiFj47GMYEqnNTXQv3vKbwnDGKhRDcMrwTY42RVUH-_d4Q@mail.gmail.com>

On 10/12/2015 02:33 PM, Kamil Debski wrote:
> Hi,
> 
> On 12 October 2015 at 12:50, Hans Verkuil <hverkuil@xs4all.nl> wrote:
>> On 10/06/2015 12:32 AM, Russell King - ARM Linux wrote:
>>> On Mon, Sep 07, 2015 at 03:44:43PM +0200, Hans Verkuil wrote:
>>>> +    if (status & CEC_STATUS_TX_DONE) {
>>>> +            if (status & CEC_STATUS_TX_ERROR) {
>>>> +                    dev_dbg(cec->dev, "CEC_STATUS_TX_ERROR set\n");
>>>> +                    cec->tx = STATE_ERROR;
>>>> +            } else {
>>>> +                    dev_dbg(cec->dev, "CEC_STATUS_TX_DONE\n");
>>>> +                    cec->tx = STATE_DONE;
>>>> +            }
>>>> +            s5p_clr_pending_tx(cec);
>>>> +    }
>>>
>>> Your CEC implementation seems to be written around the idea that there
>>> are only two possible outcomes from a CEC message - "done" and "error",
>>> which get translated to:
>>
>> This code is for the Samsung exynos CEC implementation. Marek, is this all
>> that the exynos CEC hardware returns?
> 
> The possible status values that are implemented in the CEC framework
> are following:
> 
> +/* cec status field */
> +#define CEC_TX_STATUS_OK               (0)
> +#define CEC_TX_STATUS_ARB_LOST         (1 << 0)
> +#define CEC_TX_STATUS_RETRY_TIMEOUT    (1 << 1)
> +#define CEC_TX_STATUS_FEATURE_ABORT    (1 << 2)
> +#define CEC_TX_STATUS_REPLY_TIMEOUT    (1 << 3)
> +#define CEC_RX_STATUS_READY            (0)
> 
> The only two ones I could match with the Exynos CEC module status bits are
> CEC_TX_STATUS_OK and  CEC_TX_STATUS_RETRY_TIMEOUT.
> 
> The status bits in Exynos HW are:
> - Tx_Error
> - Tx_Done
> - Tx_Transferring
> - Tx_Running
> - Tx_Bytes_Transferred
> 
> - Tx_Wait
> - Tx_Sending_Status_Bit
> - Tx_Sending_Hdr_Blk
> - Tx_Sending_Data_Blk
> - Tx_Latest_Initiator
> 
> - Tx_Wait_SFT_Succ
> - Tx_Wait_SFT_New
> - Tx_Wait_SFT_Retran
> - Tx_Retrans_Cnt
> - Tx_ACK_Failed

So are these all intermediate states? And every transfer always ends with Tx_Done or
Tx_Error state?

It does look that way...

Regards,

	Hans

> 
>>
>>>
>>>> +    case STATE_DONE:
>>>> +            cec_transmit_done(cec->adap, CEC_TX_STATUS_OK);
>>>> +            cec->tx = STATE_IDLE;
>>>> +            break;
>>>> +    case STATE_ERROR:
>>>> +            cec_transmit_done(cec->adap, CEC_TX_STATUS_RETRY_TIMEOUT);
>>>> +            cec->tx = STATE_IDLE;
>>>
>>> "okay" and "retry_timeout".  So, if we have an adapter which can report
>>> (eg) a NACK, we have to report it as the obscure "retry timeout" status?
>>> Why this obscure naming - why can't we have something that uses the
>>> terminology in the spec?
>>>
>>
>> Actually, a NACK should lead to a re-transmission (up to 5 times), see CEC 7.1.
>> The assumption of the CEC framework is that this is done by the CEC adapter
>> driver, not by the framework. So if after repeated retransmissions there is
>> still no Ack, the CEC_TX_STATUS_RETRY_TIMEOUT error is returned. I could
>> change this to _MAX_RETRIES_REACHED if you prefer.
>>
>> The CEC_TX_STATUS_ macros were based on what the adv drivers support (except
>> for CEC_TX_STATUS_REPLY_TIMEOUT which is specific to the framework).
>>
>> Regards,
>>
>>         Hans
> 
> Best wishes,
> Kamil
> 


  reply	other threads:[~2015-10-12 12:39 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-07 13:44 [PATCHv9 00/15] HDMI CEC framework Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 01/15] dts: exynos4*: add HDMI CEC pin definition to pinctrl Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 02/15] dts: exynos4: add node for the HDMI CEC device Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 03/15] dts: exynos4412-odroid*: enable " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 04/15] input.h: add BUS_CEC type Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 05/15] HID: add HDMI CEC specific keycodes Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 06/15] rc: Add HDMI CEC protocol handling Hans Verkuil
2015-10-06 18:05   ` Russell King - ARM Linux
2015-10-12 11:50     ` Hans Verkuil
2015-10-13 23:09       ` Russell King - ARM Linux
2015-10-13 23:09         ` Russell King - ARM Linux
2015-10-14  7:12         ` Hans Verkuil
2015-10-15  7:31       ` Russell King - ARM Linux
2015-09-07 13:44 ` [PATCHv9 07/15] cec: add HDMI CEC framework Hans Verkuil
2015-10-06 17:06   ` Russell King - ARM Linux
2015-10-12 11:35     ` Hans Verkuil
2015-10-13 22:51       ` Russell King - ARM Linux
2015-10-14  6:29         ` Hans Verkuil
2015-10-15 17:34           ` Russell King - ARM Linux
2015-10-15 17:34             ` Russell King - ARM Linux
2015-10-15 17:45             ` Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 08/15] cec.txt: add CEC framework documentation Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 09/15] DocBook/media: add CEC documentation Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 10/15] v4l2-subdev: add HDMI CEC ops Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 11/15] cec: adv7604: add cec support Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 12/15] cec: adv7842: " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 13/15] cec: adv7511: " Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 14/15] cec: s5p-cec: Add s5p-cec driver Hans Verkuil
2015-10-05 22:32   ` Russell King - ARM Linux
2015-10-12 10:50     ` Hans Verkuil
2015-10-12 12:33       ` Kamil Debski
2015-10-12 12:39         ` Hans Verkuil [this message]
2015-10-12 12:39           ` Hans Verkuil
2015-10-12 12:44           ` Kamil Debski
2015-10-13 23:26           ` Russell King - ARM Linux
2015-10-05 23:11   ` Russell King - ARM Linux
2015-10-12 10:54     ` Hans Verkuil
2015-09-07 13:44 ` [PATCHv9 15/15] cobalt: add cec support Hans Verkuil

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=561BAA0E.4040905@xs4all.nl \
    --to=hverkuil@xs4all.nl \
    --cc=dmitry.torokhov@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hans.verkuil@cisco.com \
    --cc=hansverk@cisco.com \
    --cc=kamil@wypas.org \
    --cc=kyungmin.park@samsung.com \
    --cc=lars@opdenkamp.eu \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=m.szyprowski@samsung.com \
    --cc=sean@mess.org \
    --cc=thomas@tommie-lie.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 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.