Hi,
I've found a regression in the ast driver, for AST2600 hardware.
before the upstream commit f9bd00e0ea9d
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=f9bd00e0ea9d9b04140aa969a9a13ad3597a1e4e
The ast driver handled AST 2600 chip like an AST 2500.
After this commit, it uses some default values, more like the older AST
chip.
There are a lot of places in the driver like this:
https://elixir.bootlin.com/linux/v5.18.1/source/drivers/gpu/drm/ast/ast_post.c#L82
where it checks for (AST2300 || AST2400 || AST2500) but not for AST2600.
This makes the VGA output, to be blurred and flickered with whites lines
on AST2600.
The issue is present since v5.11
For v5.11~v5.17 I propose a simple workaround (as there are no other
reference to AST2600 in the driver):
--- a/drivers/gpu/drm/ast/ast_main.c
+++ b/drivers/gpu/drm/ast/ast_main.c
@@ -146,7 +146,8 @@ static int ast_detect_chip(struct drm_device *dev,
bool *need_post)
/* Identify chipset */
if (pdev->revision >= 0x50) {
- ast->chip = AST2600;
+ /* Workaround to use the same codepath for AST2600 */
+ ast->chip = AST2500;
drm_info(dev, "AST 2600 detected\n");
} else if (pdev->revision >= 0x40) {
ast->chip = AST2500;
starting from v5.18, there is another reference to AST2600 in the code
https://elixir.bootlin.com/linux/v5.18/source/drivers/gpu/drm/ast/ast_main.c#L212
So I think someone with good aspeed knowledge should review all
locations where there is a test for AST2500, and figure out what should
be done for AST2600
Thanks,
--
Jocelyn