Re: [REGRESSION] VGA output with AST 2600 graphics.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 01/06/2022 12:33, Thomas Zimmermann wrote:
Hi Jocelyn,

thanks for reporting this bug.

Am 01.06.22 um 11:33 schrieb Jocelyn Falempe:
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;

The whole handling of different models in this driver is broken by design and needs to be replaced.  I don't have much of the affected hardware, so such things are going slowly. :(

For an intermediate fix, it would be better to change all tests for AST2500 to include AST2600 as well. There aren't too many IIRC.

I feel a bit uncomfortable doing this, because I don't know if this settings are good for AST2600 or not. I just know that AST2500 settings are better than the "default".

Also it may not apply cleanly up to v5.11

I will do a test patch and see what it gives.

Another solution would be to just revert f9bd00e0ea9d for v5.11 to v5.17 ?

Best regards,

--

Jocelyn


Best regards
Thomas

          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,






[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux