All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joel Stanley <joel@jms.id.au>
To: Jammy Huang <jammy_huang@aspeedtech.com>
Cc: Eddie James <eajames@linux.ibm.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Andrew Jeffery <andrew@aj.id.au>,
	linux-media@vger.kernel.org,
	OpenBMC Maillist <openbmc@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	linux-aspeed <linux-aspeed@lists.ozlabs.org>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/4] media: aspeed: Fix timing polarity incorrect
Date: Wed, 22 Dec 2021 01:22:36 +0000	[thread overview]
Message-ID: <CACPK8Xf7rsjgCv=Honyf8gwDWbG67dPVjE+z_tXD4yEu1WaE5w@mail.gmail.com> (raw)
In-Reply-To: <20211217095403.2618-5-jammy_huang@aspeedtech.com>

On Fri, 17 Dec 2021 at 09:54, Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> This is a workaround for polarity unstable.
> Sync value get by VR09C counts from sync's rising edge, which means
> sync's polarity is negative if sync value is bigger than total/2.
>
> Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
> ---
>  drivers/media/platform/aspeed-video.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5ad3a20c5bac..f628f69bb7dd 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -989,6 +989,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_top = FIELD_GET(VE_SRC_TB_EDGE_DET_TOP,
>                                              src_tb_edge);
>                 det->vsync = FIELD_GET(VE_SYNC_STATUS_VSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->vsync > (FIELD_GET(VE_MODE_DETECT_V_LINES, mds) >> 1))

Are you right shifting as this is the value / 2? I think it's clearer
to write / 2 instead of >> 1.

Mention in the comment that this is a workaround for when the sync
value is larger than half.

> +                       det->polarities &= ~V4L2_DV_VSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_VSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_VSYNC_POS_POL) {
>                         det->vbackporch = video->frame_top - det->vsync;
>                         det->vfrontporch =
> @@ -1010,6 +1019,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_left = FIELD_GET(VE_SRC_LR_EDGE_DET_LEFT,
>                                               src_lr_edge);
>                 det->hsync = FIELD_GET(VE_SYNC_STATUS_HSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->hsync > (htotal >> 1))
> +                       det->polarities &= ~V4L2_DV_HSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_HSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_HSYNC_POS_POL) {
>                         det->hbackporch = video->frame_left - det->hsync;
>                         det->hfrontporch = htotal - video->frame_right;
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Joel Stanley <joel@jms.id.au>
To: Jammy Huang <jammy_huang@aspeedtech.com>
Cc: linux-aspeed <linux-aspeed@lists.ozlabs.org>,
	Andrew Jeffery <andrew@aj.id.au>,
	OpenBMC Maillist <openbmc@lists.ozlabs.org>,
	Eddie James <eajames@linux.ibm.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	linux-media@vger.kernel.org
Subject: Re: [PATCH 4/4] media: aspeed: Fix timing polarity incorrect
Date: Wed, 22 Dec 2021 01:22:36 +0000	[thread overview]
Message-ID: <CACPK8Xf7rsjgCv=Honyf8gwDWbG67dPVjE+z_tXD4yEu1WaE5w@mail.gmail.com> (raw)
In-Reply-To: <20211217095403.2618-5-jammy_huang@aspeedtech.com>

On Fri, 17 Dec 2021 at 09:54, Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> This is a workaround for polarity unstable.
> Sync value get by VR09C counts from sync's rising edge, which means
> sync's polarity is negative if sync value is bigger than total/2.
>
> Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
> ---
>  drivers/media/platform/aspeed-video.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5ad3a20c5bac..f628f69bb7dd 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -989,6 +989,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_top = FIELD_GET(VE_SRC_TB_EDGE_DET_TOP,
>                                              src_tb_edge);
>                 det->vsync = FIELD_GET(VE_SYNC_STATUS_VSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->vsync > (FIELD_GET(VE_MODE_DETECT_V_LINES, mds) >> 1))

Are you right shifting as this is the value / 2? I think it's clearer
to write / 2 instead of >> 1.

Mention in the comment that this is a workaround for when the sync
value is larger than half.

> +                       det->polarities &= ~V4L2_DV_VSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_VSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_VSYNC_POS_POL) {
>                         det->vbackporch = video->frame_top - det->vsync;
>                         det->vfrontporch =
> @@ -1010,6 +1019,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_left = FIELD_GET(VE_SRC_LR_EDGE_DET_LEFT,
>                                               src_lr_edge);
>                 det->hsync = FIELD_GET(VE_SYNC_STATUS_HSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->hsync > (htotal >> 1))
> +                       det->polarities &= ~V4L2_DV_HSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_HSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_HSYNC_POS_POL) {
>                         det->hbackporch = video->frame_left - det->hsync;
>                         det->hfrontporch = htotal - video->frame_right;
> --
> 2.25.1
>

WARNING: multiple messages have this Message-ID (diff)
From: Joel Stanley <joel@jms.id.au>
To: Jammy Huang <jammy_huang@aspeedtech.com>
Cc: Eddie James <eajames@linux.ibm.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	 Andrew Jeffery <andrew@aj.id.au>,
	linux-media@vger.kernel.org,
	 OpenBMC Maillist <openbmc@lists.ozlabs.org>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	 linux-aspeed <linux-aspeed@lists.ozlabs.org>,
	 Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 4/4] media: aspeed: Fix timing polarity incorrect
Date: Wed, 22 Dec 2021 01:22:36 +0000	[thread overview]
Message-ID: <CACPK8Xf7rsjgCv=Honyf8gwDWbG67dPVjE+z_tXD4yEu1WaE5w@mail.gmail.com> (raw)
In-Reply-To: <20211217095403.2618-5-jammy_huang@aspeedtech.com>

On Fri, 17 Dec 2021 at 09:54, Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> This is a workaround for polarity unstable.
> Sync value get by VR09C counts from sync's rising edge, which means
> sync's polarity is negative if sync value is bigger than total/2.
>
> Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
> ---
>  drivers/media/platform/aspeed-video.c | 18 ++++++++++++++++++
>  1 file changed, 18 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5ad3a20c5bac..f628f69bb7dd 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -989,6 +989,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_top = FIELD_GET(VE_SRC_TB_EDGE_DET_TOP,
>                                              src_tb_edge);
>                 det->vsync = FIELD_GET(VE_SYNC_STATUS_VSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->vsync > (FIELD_GET(VE_MODE_DETECT_V_LINES, mds) >> 1))

Are you right shifting as this is the value / 2? I think it's clearer
to write / 2 instead of >> 1.

Mention in the comment that this is a workaround for when the sync
value is larger than half.

> +                       det->polarities &= ~V4L2_DV_VSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_VSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_VSYNC_POS_POL) {
>                         det->vbackporch = video->frame_top - det->vsync;
>                         det->vfrontporch =
> @@ -1010,6 +1019,15 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
>                 video->frame_left = FIELD_GET(VE_SRC_LR_EDGE_DET_LEFT,
>                                               src_lr_edge);
>                 det->hsync = FIELD_GET(VE_SYNC_STATUS_HSYNC, sync);
> +               /*
> +                * Workaround for polarity detection
> +                * Use sync(VR098) counts from sync's rising edge till falling
> +                * edge to tell sync polarity.
> +                */
> +               if (det->hsync > (htotal >> 1))
> +                       det->polarities &= ~V4L2_DV_HSYNC_POS_POL;
> +               else
> +                       det->polarities |= V4L2_DV_HSYNC_POS_POL;
>                 if (det->polarities & V4L2_DV_HSYNC_POS_POL) {
>                         det->hbackporch = video->frame_left - det->hsync;
>                         det->hfrontporch = htotal - video->frame_right;
> --
> 2.25.1
>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-12-22  1:22 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17  9:53 [PATCH 0/4] Correct timing report Jammy Huang
2021-12-17  9:53 ` Jammy Huang
2021-12-17  9:54 ` [PATCH 1/4] media: aspeed: Correct value for h-total-pixels Jammy Huang
2021-12-17  9:54   ` Jammy Huang
2021-12-22  0:54   ` Joel Stanley
2021-12-22  0:54     ` Joel Stanley
2021-12-22  0:54     ` Joel Stanley
2021-12-17  9:54 ` [PATCH 2/4] media: aspeed: Use FIELD_GET to improve readability Jammy Huang
2021-12-17  9:54   ` Jammy Huang
2021-12-22  0:59   ` Joel Stanley
2021-12-22  0:59     ` Joel Stanley
2021-12-22  0:59     ` Joel Stanley
2021-12-22  6:10     ` Jammy Huang
2021-12-22  6:10       ` Jammy Huang
2021-12-22  6:10       ` Jammy Huang
2021-12-17  9:54 ` [PATCH 3/4] media: aspeed: Correct values for detected timing Jammy Huang
2021-12-17  9:54   ` Jammy Huang
2021-12-22  1:31   ` Joel Stanley
2021-12-22  1:31     ` Joel Stanley
2021-12-22  1:31     ` Joel Stanley
2021-12-22  6:11     ` Jammy Huang
2021-12-22  6:11       ` Jammy Huang
2021-12-22  6:11       ` Jammy Huang
2021-12-17  9:54 ` [PATCH 4/4] media: aspeed: Fix timing polarity incorrect Jammy Huang
2021-12-17  9:54   ` Jammy Huang
2021-12-22  1:22   ` Joel Stanley [this message]
2021-12-22  1:22     ` Joel Stanley
2021-12-22  1:22     ` Joel Stanley
2021-12-22  6:10     ` Jammy Huang
2021-12-22  6:10       ` Jammy Huang
2021-12-22  6:10       ` Jammy Huang

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='CACPK8Xf7rsjgCv=Honyf8gwDWbG67dPVjE+z_tXD4yEu1WaE5w@mail.gmail.com' \
    --to=joel@jms.id.au \
    --cc=andrew@aj.id.au \
    --cc=eajames@linux.ibm.com \
    --cc=jammy_huang@aspeedtech.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-aspeed@lists.ozlabs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    /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.