* [PATCH v4 1/2] media: aspeed: Add macro for the fields of the mode-detect registers
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 2/2] media: aspeed: Fix unstable timing detection Jammy Huang
2022-01-25 10:43 ` [PATCH v4 0/2] Fix incorrect resolution detected Hans Verkuil
2 siblings, 0 replies; 5+ 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 [flat|nested] 5+ messages in thread
* [PATCH v4 2/2] media: aspeed: Fix unstable timing detection
2022-01-18 10:07 [PATCH v4 0/2] Fix incorrect resolution detected 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-25 10:43 ` [PATCH v4 0/2] Fix incorrect resolution detected Hans Verkuil
2 siblings, 0 replies; 5+ 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 [flat|nested] 5+ messages in thread
* Re: [PATCH v4 0/2] Fix incorrect resolution detected
2022-01-18 10:07 [PATCH v4 0/2] Fix incorrect resolution detected 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 ` [PATCH v4 2/2] media: aspeed: Fix unstable timing detection Jammy Huang
@ 2022-01-25 10:43 ` Hans Verkuil
2022-01-26 1:41 ` Jammy Huang
2 siblings, 1 reply; 5+ 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] 5+ messages in thread
* Re: [PATCH v4 0/2] Fix incorrect resolution detected
2022-01-25 10:43 ` [PATCH v4 0/2] Fix incorrect resolution detected Hans Verkuil
@ 2022-01-26 1:41 ` Jammy Huang
0 siblings, 0 replies; 5+ 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] 5+ messages in thread