* [PATCH v5 0/2] Fix incorrect resolution detected
@ 2022-01-26 1:47 ` Jammy Huang
0 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 v5:
- Rebase on top of 5.18f
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 | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
--
2.25.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v5 0/2] Fix incorrect resolution detected
@ 2022-01-26 1:47 ` Jammy Huang
0 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 v5:
- Rebase on top of 5.18f
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 | 26 +++++++++++++++++++++++++-
1 file changed, 25 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] 9+ messages in thread
* [PATCH v5 1/2] media: aspeed: Add macro for the fields of the mode-detect registers
2022-01-26 1:47 ` Jammy Huang
@ 2022-01-26 1:47 ` Jammy Huang
-1 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 51fb18453b81..5d1ec3de50ad 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -178,6 +178,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
@@ -1105,7 +1111,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));
}
static void aspeed_video_start(struct aspeed_video *video)
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v5 1/2] media: aspeed: Add macro for the fields of the mode-detect registers
@ 2022-01-26 1:47 ` Jammy Huang
0 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 51fb18453b81..5d1ec3de50ad 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -178,6 +178,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
@@ -1105,7 +1111,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));
}
static void aspeed_video_start(struct aspeed_video *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] 9+ messages in thread
* [PATCH v5 2/2] media: aspeed: Fix unstable timing detection
2022-01-26 1:47 ` Jammy Huang
@ 2022-01-26 1:47 ` Jammy Huang
-1 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 5d1ec3de50ad..eb9c17ac0e14 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -153,9 +153,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)
@@ -909,6 +914,7 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
bool invalid_resolution = true;
int rc;
int tries = 0;
+ u32 mds;
u32 src_lr_edge;
u32 src_tb_edge;
struct v4l2_bt_timings *det = &video->detected_timings;
@@ -939,6 +945,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] 9+ messages in thread
* [PATCH v5 2/2] media: aspeed: Fix unstable timing detection
@ 2022-01-26 1:47 ` Jammy Huang
0 siblings, 0 replies; 9+ messages in thread
From: Jammy Huang @ 2022-01-26 1:47 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 | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
index 5d1ec3de50ad..eb9c17ac0e14 100644
--- a/drivers/media/platform/aspeed-video.c
+++ b/drivers/media/platform/aspeed-video.c
@@ -153,9 +153,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)
@@ -909,6 +914,7 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
bool invalid_resolution = true;
int rc;
int tries = 0;
+ u32 mds;
u32 src_lr_edge;
u32 src_tb_edge;
struct v4l2_bt_timings *det = &video->detected_timings;
@@ -939,6 +945,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] 9+ messages in thread
* Re: [PATCH v5 2/2] media: aspeed: Fix unstable timing detection
2022-01-26 1:47 ` Jammy Huang
(?)
@ 2022-06-20 9:28 ` Lei Yu
-1 siblings, 0 replies; 9+ messages in thread
From: Lei Yu @ 2022-06-20 9:28 UTC (permalink / raw)
To: Jammy Huang
Cc: Eddie James, Mauro Carvalho Chehab, Joel Stanley, Andrew Jeffery,
linux-media, openbmc, moderated list:ARM/ASPEED MACHINE SUPPORT,
moderated list:ARM/ASPEED MACHINE SUPPORT, open list
We hit an issue where the resolution is not detected correctly.
The issue could be fixed by this patch.
Tested-by: Lei YU <yulei.sh@bytedance.com>
On Wed, Jan 26, 2022 at 9:49 AM Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> 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 | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5d1ec3de50ad..eb9c17ac0e14 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -153,9 +153,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)
> @@ -909,6 +914,7 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
> bool invalid_resolution = true;
> int rc;
> int tries = 0;
> + u32 mds;
> u32 src_lr_edge;
> u32 src_tb_edge;
> struct v4l2_bt_timings *det = &video->detected_timings;
> @@ -939,6 +945,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
>
--
BRs,
Lei YU
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 2/2] media: aspeed: Fix unstable timing detection
@ 2022-06-20 9:28 ` Lei Yu
0 siblings, 0 replies; 9+ messages in thread
From: Lei Yu @ 2022-06-20 9:28 UTC (permalink / raw)
To: Jammy Huang
Cc: moderated list:ARM/ASPEED MACHINE SUPPORT, Andrew Jeffery,
openbmc, Eddie James, open list, Joel Stanley,
Mauro Carvalho Chehab, moderated list:ARM/ASPEED MACHINE SUPPORT,
linux-media
We hit an issue where the resolution is not detected correctly.
The issue could be fixed by this patch.
Tested-by: Lei YU <yulei.sh@bytedance.com>
On Wed, Jan 26, 2022 at 9:49 AM Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> 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 | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5d1ec3de50ad..eb9c17ac0e14 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -153,9 +153,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)
> @@ -909,6 +914,7 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
> bool invalid_resolution = true;
> int rc;
> int tries = 0;
> + u32 mds;
> u32 src_lr_edge;
> u32 src_tb_edge;
> struct v4l2_bt_timings *det = &video->detected_timings;
> @@ -939,6 +945,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
>
--
BRs,
Lei YU
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v5 2/2] media: aspeed: Fix unstable timing detection
@ 2022-06-20 9:28 ` Lei Yu
0 siblings, 0 replies; 9+ messages in thread
From: Lei Yu @ 2022-06-20 9:28 UTC (permalink / raw)
To: Jammy Huang
Cc: Eddie James, Mauro Carvalho Chehab, Joel Stanley, Andrew Jeffery,
linux-media, openbmc, moderated list:ARM/ASPEED MACHINE SUPPORT,
moderated list:ARM/ASPEED MACHINE SUPPORT, open list
We hit an issue where the resolution is not detected correctly.
The issue could be fixed by this patch.
Tested-by: Lei YU <yulei.sh@bytedance.com>
On Wed, Jan 26, 2022 at 9:49 AM Jammy Huang <jammy_huang@aspeedtech.com> wrote:
>
> 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 | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/drivers/media/platform/aspeed-video.c b/drivers/media/platform/aspeed-video.c
> index 5d1ec3de50ad..eb9c17ac0e14 100644
> --- a/drivers/media/platform/aspeed-video.c
> +++ b/drivers/media/platform/aspeed-video.c
> @@ -153,9 +153,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)
> @@ -909,6 +914,7 @@ static void aspeed_video_get_resolution(struct aspeed_video *video)
> bool invalid_resolution = true;
> int rc;
> int tries = 0;
> + u32 mds;
> u32 src_lr_edge;
> u32 src_tb_edge;
> struct v4l2_bt_timings *det = &video->detected_timings;
> @@ -939,6 +945,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
>
--
BRs,
Lei YU
_______________________________________________
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] 9+ messages in thread
end of thread, other threads:[~2022-06-20 9:39 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-26 1:47 [PATCH v5 0/2] Fix incorrect resolution detected Jammy Huang
2022-01-26 1:47 ` Jammy Huang
2022-01-26 1:47 ` [PATCH v5 1/2] media: aspeed: Add macro for the fields of the mode-detect registers Jammy Huang
2022-01-26 1:47 ` Jammy Huang
2022-01-26 1:47 ` [PATCH v5 2/2] media: aspeed: Fix unstable timing detection Jammy Huang
2022-01-26 1:47 ` Jammy Huang
2022-06-20 9:28 ` Lei Yu
2022-06-20 9:28 ` Lei Yu
2022-06-20 9:28 ` Lei Yu
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.