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
next prev parent reply other threads:[~2015-10-12 12:39 UTC|newest]
Thread overview: 35+ 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-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: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: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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox