All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/2] Fix incorrect resolution detected
@ 2022-01-18 10:07 ` Jammy Huang
  0 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

This series fixes incorrect resolution detected.
We found this problem happened occasionally in the switch between bios
and bootloader.

Changes in v4:
 - Correct the subject of patch

Changes in v3:
 - In v2, we tried to increase the min-required-count of stable signal
   to avoid incorrect transient state in timing detection. But it is
   not working for all conditions.
   Thus, we go another way in v3. Use regs, which can represent the
   signal status, to decide if we needs to do detection again.
 
Changes in v2:
 - Separate the patch into two patches

Jammy Huang (2):
  media: aspeed: Add macro for the fields of the mode-detect registers
  media: aspeed: Fix unstable timing detection

 drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v4 0/2] Fix incorrect resolution detected
@ 2022-01-18 10:07 ` Jammy Huang
  0 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

This series fixes incorrect resolution detected.
We found this problem happened occasionally in the switch between bios
and bootloader.

Changes in v4:
 - Correct the subject of patch

Changes in v3:
 - In v2, we tried to increase the min-required-count of stable signal
   to avoid incorrect transient state in timing detection. But it is
   not working for all conditions.
   Thus, we go another way in v3. Use regs, which can represent the
   signal status, to decide if we needs to do detection again.
 
Changes in v2:
 - Separate the patch into two patches

Jammy Huang (2):
  media: aspeed: Add macro for the fields of the mode-detect registers
  media: aspeed: Fix unstable timing detection

 drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

-- 
2.25.1


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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v4 1/2] media: aspeed: Add macro for the fields of the mode-detect registers
  2022-01-18 10:07 ` Jammy Huang
@ 2022-01-18 10:07   ` Jammy Huang
  -1 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

VE_MODE_DT_HOR_TOLER: the tolerance in detecting for stable horizontal
signal.
VE_MODE_DT_VER_TOLER: the tolerance in detecting for stable vertical
signal.
VE_MODE_DT_HOR_STABLE: the minimum required count in detecting stable
HSYNC signal to set mode detection horizontal signal stable.
VE_MODE_DT_VER_STABLE: the minimum required count in detecting stable
VSYNC signal to set mode detection vertical signal stable.

Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
---
 drivers/media/platform/aspeed-video.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 4f5f5dd364ee..5ba4d70c8dab 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -190,6 +190,12 @@
 #define  VE_INTERRUPT_VSYNC_DESC	BIT(11)
 
 #define VE_MODE_DETECT			0x30c
+#define  VE_MODE_DT_HOR_TOLER		GENMASK(31, 28)
+#define  VE_MODE_DT_VER_TOLER		GENMASK(27, 24)
+#define  VE_MODE_DT_HOR_STABLE		GENMASK(23, 20)
+#define  VE_MODE_DT_VER_STABLE		GENMASK(19, 16)
+#define  VE_MODE_DT_EDG_THROD		GENMASK(15, 8)
+
 #define VE_MEM_RESTRICT_START		0x310
 #define VE_MEM_RESTRICT_END		0x314
 
@@ -1238,7 +1244,12 @@ static void aspeed_video_init_regs(struct aspeed_video *video)
 	aspeed_video_write(video, VE_SCALING_FILTER3, 0x00200000);
 
 	/* Set mode detection defaults */
-	aspeed_video_write(video, VE_MODE_DETECT, 0x22666500);
+	aspeed_video_write(video, VE_MODE_DETECT,
+			   FIELD_PREP(VE_MODE_DT_HOR_TOLER, 2) |
+			   FIELD_PREP(VE_MODE_DT_VER_TOLER, 2) |
+			   FIELD_PREP(VE_MODE_DT_HOR_STABLE, 6) |
+			   FIELD_PREP(VE_MODE_DT_VER_STABLE, 6) |
+			   FIELD_PREP(VE_MODE_DT_EDG_THROD, 0x65));
 
 	aspeed_video_write(video, VE_BCD_CTRL, 0);
 }
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v4 1/2] media: aspeed: Add macro for the fields of the mode-detect registers
@ 2022-01-18 10:07   ` Jammy Huang
  0 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

VE_MODE_DT_HOR_TOLER: the tolerance in detecting for stable horizontal
signal.
VE_MODE_DT_VER_TOLER: the tolerance in detecting for stable vertical
signal.
VE_MODE_DT_HOR_STABLE: the minimum required count in detecting stable
HSYNC signal to set mode detection horizontal signal stable.
VE_MODE_DT_VER_STABLE: the minimum required count in detecting stable
VSYNC signal to set mode detection vertical signal stable.

Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
---
 drivers/media/platform/aspeed-video.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 4f5f5dd364ee..5ba4d70c8dab 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -190,6 +190,12 @@
 #define  VE_INTERRUPT_VSYNC_DESC	BIT(11)
 
 #define VE_MODE_DETECT			0x30c
+#define  VE_MODE_DT_HOR_TOLER		GENMASK(31, 28)
+#define  VE_MODE_DT_VER_TOLER		GENMASK(27, 24)
+#define  VE_MODE_DT_HOR_STABLE		GENMASK(23, 20)
+#define  VE_MODE_DT_VER_STABLE		GENMASK(19, 16)
+#define  VE_MODE_DT_EDG_THROD		GENMASK(15, 8)
+
 #define VE_MEM_RESTRICT_START		0x310
 #define VE_MEM_RESTRICT_END		0x314
 
@@ -1238,7 +1244,12 @@ static void aspeed_video_init_regs(struct aspeed_video *video)
 	aspeed_video_write(video, VE_SCALING_FILTER3, 0x00200000);
 
 	/* Set mode detection defaults */
-	aspeed_video_write(video, VE_MODE_DETECT, 0x22666500);
+	aspeed_video_write(video, VE_MODE_DETECT,
+			   FIELD_PREP(VE_MODE_DT_HOR_TOLER, 2) |
+			   FIELD_PREP(VE_MODE_DT_VER_TOLER, 2) |
+			   FIELD_PREP(VE_MODE_DT_HOR_STABLE, 6) |
+			   FIELD_PREP(VE_MODE_DT_VER_STABLE, 6) |
+			   FIELD_PREP(VE_MODE_DT_EDG_THROD, 0x65));
 
 	aspeed_video_write(video, VE_BCD_CTRL, 0);
 }
-- 
2.25.1


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

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v4 2/2] media: aspeed: Fix unstable timing detection
  2022-01-18 10:07 ` Jammy Huang
@ 2022-01-18 10:07   ` Jammy Huang
  -1 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

Using stable-signal in resolution detection, and try detection again
if unstable.

VE_MODE_DETECT_EXTSRC_ADC: 1 if video source is from ADC output.
VE_MODE_DETECT_H_STABLE: 1 if horizontal signal detection is stable.
VE_MODE_DETECT_V_STABLE: 1 if vertical signal detection is stable.

Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
---
 drivers/media/platform/aspeed-video.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 5ba4d70c8dab..585ee2997d44 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -165,9 +165,14 @@
 
 #define VE_MODE_DETECT_STATUS		0x098
 #define  VE_MODE_DETECT_H_PERIOD	GENMASK(11, 0)
+#define  VE_MODE_DETECT_EXTSRC_ADC	BIT(12)
+#define  VE_MODE_DETECT_H_STABLE	BIT(13)
+#define  VE_MODE_DETECT_V_STABLE	BIT(14)
 #define  VE_MODE_DETECT_V_LINES		GENMASK(27, 16)
 #define  VE_MODE_DETECT_STATUS_VSYNC	BIT(28)
 #define  VE_MODE_DETECT_STATUS_HSYNC	BIT(29)
+#define  VE_MODE_DETECT_VSYNC_RDY	BIT(30)
+#define  VE_MODE_DETECT_HSYNC_RDY	BIT(31)
 
 #define VE_SYNC_STATUS			0x09c
 #define  VE_SYNC_STATUS_HSYNC		GENMASK(11, 0)
@@ -971,6 +976,13 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
 			return;
 		}
 
+		mds = aspeed_video_read(video, VE_MODE_DETECT_STATUS);
+		// try detection again if current signal isn't stable
+		if (!(mds & VE_MODE_DETECT_H_STABLE) ||
+		    !(mds & VE_MODE_DETECT_V_STABLE) ||
+		    (mds & VE_MODE_DETECT_EXTSRC_ADC))
+			continue;
+
 		aspeed_video_check_and_set_polarity(video);
 
 		aspeed_video_enable_mode_detect(video);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v4 2/2] media: aspeed: Fix unstable timing detection
@ 2022-01-18 10:07   ` Jammy Huang
  0 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-18 10:07 UTC (permalink / raw)
  To: eajames, mchehab, joel, andrew, linux-media, openbmc,
	linux-arm-kernel, linux-aspeed, linux-kernel

Using stable-signal in resolution detection, and try detection again
if unstable.

VE_MODE_DETECT_EXTSRC_ADC: 1 if video source is from ADC output.
VE_MODE_DETECT_H_STABLE: 1 if horizontal signal detection is stable.
VE_MODE_DETECT_V_STABLE: 1 if vertical signal detection is stable.

Signed-off-by: Jammy Huang <jammy_huang@aspeedtech.com>
---
 drivers/media/platform/aspeed-video.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 5ba4d70c8dab..585ee2997d44 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -165,9 +165,14 @@
 
 #define VE_MODE_DETECT_STATUS		0x098
 #define  VE_MODE_DETECT_H_PERIOD	GENMASK(11, 0)
+#define  VE_MODE_DETECT_EXTSRC_ADC	BIT(12)
+#define  VE_MODE_DETECT_H_STABLE	BIT(13)
+#define  VE_MODE_DETECT_V_STABLE	BIT(14)
 #define  VE_MODE_DETECT_V_LINES		GENMASK(27, 16)
 #define  VE_MODE_DETECT_STATUS_VSYNC	BIT(28)
 #define  VE_MODE_DETECT_STATUS_HSYNC	BIT(29)
+#define  VE_MODE_DETECT_VSYNC_RDY	BIT(30)
+#define  VE_MODE_DETECT_HSYNC_RDY	BIT(31)
 
 #define VE_SYNC_STATUS			0x09c
 #define  VE_SYNC_STATUS_HSYNC		GENMASK(11, 0)
@@ -971,6 +976,13 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
 			return;
 		}
 
+		mds = aspeed_video_read(video, VE_MODE_DETECT_STATUS);
+		// try detection again if current signal isn't stable
+		if (!(mds & VE_MODE_DETECT_H_STABLE) ||
+		    !(mds & VE_MODE_DETECT_V_STABLE) ||
+		    (mds & VE_MODE_DETECT_EXTSRC_ADC))
+			continue;
+
 		aspeed_video_check_and_set_polarity(video);
 
 		aspeed_video_enable_mode_detect(video);
-- 
2.25.1


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

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v4 0/2] Fix incorrect resolution detected
  2022-01-18 10:07 ` Jammy Huang
@ 2022-01-25 10:43   ` Hans Verkuil
  -1 siblings, 0 replies; 10+ messages in thread
From: Hans Verkuil @ 2022-01-25 10:43 UTC (permalink / raw)
  To: Jammy Huang, eajames, mchehab, joel, andrew, linux-media,
	openbmc, linux-arm-kernel, linux-aspeed, linux-kernel

Hi Jammy,

On 18/01/2022 11:07, Jammy Huang wrote:
> This series fixes incorrect resolution detected.
> We found this problem happened occasionally in the switch between bios
> and bootloader.

Can you rebase this on top of:

https://git.linuxtv.org/hverkuil/media_tree.git/log/?h=for-v5.18f

This series doesn't apply cleanly.

Regards,

	Hans

> 
> Changes in v4:
>  - Correct the subject of patch
> 
> Changes in v3:
>  - In v2, we tried to increase the min-required-count of stable signal
>    to avoid incorrect transient state in timing detection. But it is
>    not working for all conditions.
>    Thus, we go another way in v3. Use regs, which can represent the
>    signal status, to decide if we needs to do detection again.
>  
> Changes in v2:
>  - Separate the patch into two patches
> 
> Jammy Huang (2):
>   media: aspeed: Add macro for the fields of the mode-detect registers
>   media: aspeed: Fix unstable timing detection
> 
>  drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
>  1 file changed, 24 insertions(+), 1 deletion(-)
> 


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v4 0/2] Fix incorrect resolution detected
@ 2022-01-25 10:43   ` Hans Verkuil
  0 siblings, 0 replies; 10+ messages in thread
From: Hans Verkuil @ 2022-01-25 10:43 UTC (permalink / raw)
  To: Jammy Huang, eajames, mchehab, joel, andrew, linux-media,
	openbmc, linux-arm-kernel, linux-aspeed, linux-kernel

Hi Jammy,

On 18/01/2022 11:07, Jammy Huang wrote:
> This series fixes incorrect resolution detected.
> We found this problem happened occasionally in the switch between bios
> and bootloader.

Can you rebase this on top of:

https://git.linuxtv.org/hverkuil/media_tree.git/log/?h=for-v5.18f

This series doesn't apply cleanly.

Regards,

	Hans

> 
> Changes in v4:
>  - Correct the subject of patch
> 
> Changes in v3:
>  - In v2, we tried to increase the min-required-count of stable signal
>    to avoid incorrect transient state in timing detection. But it is
>    not working for all conditions.
>    Thus, we go another way in v3. Use regs, which can represent the
>    signal status, to decide if we needs to do detection again.
>  
> Changes in v2:
>  - Separate the patch into two patches
> 
> Jammy Huang (2):
>   media: aspeed: Add macro for the fields of the mode-detect registers
>   media: aspeed: Fix unstable timing detection
> 
>  drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
>  1 file changed, 24 insertions(+), 1 deletion(-)
> 


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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v4 0/2] Fix incorrect resolution detected
  2022-01-25 10:43   ` Hans Verkuil
@ 2022-01-26  1:41     ` Jammy Huang
  -1 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-26  1:41 UTC (permalink / raw)
  To: Hans Verkuil, eajames, mchehab, joel, andrew, linux-media,
	openbmc, linux-arm-kernel, linux-aspeed, linux-kernel


On 2022/1/25 下午 06:43, Hans Verkuil wrote:
> Hi Jammy,
>
> On 18/01/2022 11:07, Jammy Huang wrote:
>> This series fixes incorrect resolution detected.
>> We found this problem happened occasionally in the switch between bios
>> and bootloader.
> Can you rebase this on top of:
>
> https://git.linuxtv.org/hverkuil/media_tree.git/log/?h=for-v5.18f
>
> This series doesn't apply cleanly.

OK, I will update patch based on this code base.

Regards,

	Jammy

>
> Regards,
>
> 	Hans
>
>> Changes in v4:
>>   - Correct the subject of patch
>>
>> Changes in v3:
>>   - In v2, we tried to increase the min-required-count of stable signal
>>     to avoid incorrect transient state in timing detection. But it is
>>     not working for all conditions.
>>     Thus, we go another way in v3. Use regs, which can represent the
>>     signal status, to decide if we needs to do detection again.
>>   
>> Changes in v2:
>>   - Separate the patch into two patches
>>
>> Jammy Huang (2):
>>    media: aspeed: Add macro for the fields of the mode-detect registers
>>    media: aspeed: Fix unstable timing detection
>>
>>   drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
>>   1 file changed, 24 insertions(+), 1 deletion(-)
>>
-- 
Best Regards
Jammy


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v4 0/2] Fix incorrect resolution detected
@ 2022-01-26  1:41     ` Jammy Huang
  0 siblings, 0 replies; 10+ messages in thread
From: Jammy Huang @ 2022-01-26  1:41 UTC (permalink / raw)
  To: Hans Verkuil, eajames, mchehab, joel, andrew, linux-media,
	openbmc, linux-arm-kernel, linux-aspeed, linux-kernel


On 2022/1/25 下午 06:43, Hans Verkuil wrote:
> Hi Jammy,
>
> On 18/01/2022 11:07, Jammy Huang wrote:
>> This series fixes incorrect resolution detected.
>> We found this problem happened occasionally in the switch between bios
>> and bootloader.
> Can you rebase this on top of:
>
> https://git.linuxtv.org/hverkuil/media_tree.git/log/?h=for-v5.18f
>
> This series doesn't apply cleanly.

OK, I will update patch based on this code base.

Regards,

	Jammy

>
> Regards,
>
> 	Hans
>
>> Changes in v4:
>>   - Correct the subject of patch
>>
>> Changes in v3:
>>   - In v2, we tried to increase the min-required-count of stable signal
>>     to avoid incorrect transient state in timing detection. But it is
>>     not working for all conditions.
>>     Thus, we go another way in v3. Use regs, which can represent the
>>     signal status, to decide if we needs to do detection again.
>>   
>> Changes in v2:
>>   - Separate the patch into two patches
>>
>> Jammy Huang (2):
>>    media: aspeed: Add macro for the fields of the mode-detect registers
>>    media: aspeed: Fix unstable timing detection
>>
>>   drivers/media/platform/aspeed-video.c | 25 ++++++++++++++++++++++++-
>>   1 file changed, 24 insertions(+), 1 deletion(-)
>>
-- 
Best Regards
Jammy


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

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-01-26  1:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-18 10:07 [PATCH v4 0/2] Fix incorrect resolution detected Jammy Huang
2022-01-18 10:07 ` Jammy Huang
2022-01-18 10:07 ` [PATCH v4 1/2] media: aspeed: Add macro for the fields of the mode-detect registers Jammy Huang
2022-01-18 10:07   ` Jammy Huang
2022-01-18 10:07 ` [PATCH v4 2/2] media: aspeed: Fix unstable timing detection Jammy Huang
2022-01-18 10:07   ` Jammy Huang
2022-01-25 10:43 ` [PATCH v4 0/2] Fix incorrect resolution detected Hans Verkuil
2022-01-25 10:43   ` Hans Verkuil
2022-01-26  1:41   ` Jammy Huang
2022-01-26  1:41     ` Jammy Huang

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.