diff mbox series

[PATCH/RFC,v2] video: fbdev: atari: Fix TT High video mode

Message ID 20201101102941.2891076-1-geert@linux-m68k.org (mailing list archive)
State New, archived
Headers show
Series [PATCH/RFC,v2] video: fbdev: atari: Fix TT High video mode | expand

Commit Message

Geert Uytterhoeven Nov. 1, 2020, 10:29 a.m. UTC
The horizontal resolution (640) for the TT High video mode (1280x960) is
definitely bogus.  While fixing that, correct the timings to match the
TTM195 service manual.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
Untested on actual hardware, hence the RFC.

v2:
  - Use correct base.
---
 drivers/video/fbdev/atafb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Sam Ravnborg Nov. 1, 2020, 11:29 a.m. UTC | #1
Hi Geert.

On Sun, Nov 01, 2020 at 11:29:41AM +0100, Geert Uytterhoeven wrote:
> The horizontal resolution (640) for the TT High video mode (1280x960) is
> definitely bogus.  While fixing that, correct the timings to match the
> TTM195 service manual.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> Untested on actual hardware, hence the RFC.
> 
> v2:
>   - Use correct base.
> ---
>  drivers/video/fbdev/atafb.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
> index f253daa05d9d3872..5ecf3ec9f94cb720 100644
> --- a/drivers/video/fbdev/atafb.c
> +++ b/drivers/video/fbdev/atafb.c
> @@ -495,8 +495,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
>  		"tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
>  		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
>  	}, {
> -		/* 1280x960, 29 kHz, 60 Hz (TT high) */
> -		"tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
> +		/* 1280x960, 72 kHz, 72 Hz (TT high) */
> +		"tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
>  		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP

Well-spotted. The change of 640 => 1280 is surely right.
I have a harder time understanding why the change of pixclock from 31041
to 7761 is correct. All other modes have a pixclock close to or equal
to 32000 - so it looks strange this one is off.

You know a tons more about all this than I do so it is properly right
but I was left wondering so please enlighten me.

	Sam
Andreas Schwab Nov. 1, 2020, 12:46 p.m. UTC | #2
On Nov 01 2020, Sam Ravnborg wrote:

> Hi Geert.
>
> On Sun, Nov 01, 2020 at 11:29:41AM +0100, Geert Uytterhoeven wrote:
>> The horizontal resolution (640) for the TT High video mode (1280x960) is
>> definitely bogus.  While fixing that, correct the timings to match the
>> TTM195 service manual.
>> 
>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>> ---
>> Untested on actual hardware, hence the RFC.
>> 
>> v2:
>>   - Use correct base.
>> ---
>>  drivers/video/fbdev/atafb.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
>> index f253daa05d9d3872..5ecf3ec9f94cb720 100644
>> --- a/drivers/video/fbdev/atafb.c
>> +++ b/drivers/video/fbdev/atafb.c
>> @@ -495,8 +495,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
>>  		"tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
>>  		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
>>  	}, {
>> -		/* 1280x960, 29 kHz, 60 Hz (TT high) */
>> -		"tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
>> +		/* 1280x960, 72 kHz, 72 Hz (TT high) */
>> +		"tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
>>  		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
>
> Well-spotted. The change of 640 => 1280 is surely right.
> I have a harder time understanding why the change of pixclock from 31041
> to 7761 is correct. All other modes have a pixclock close to or equal
> to 32000 - so it looks strange this one is off.

According to the Profibuch the pixclock should be about 95000.

Andreas.
Geert Uytterhoeven Nov. 2, 2020, 8:39 a.m. UTC | #3
Hi Andreas,

On Sun, Nov 1, 2020 at 1:47 PM Andreas Schwab <schwab@linux-m68k.org> wrote:
> On Nov 01 2020, Sam Ravnborg wrote:
> > On Sun, Nov 01, 2020 at 11:29:41AM +0100, Geert Uytterhoeven wrote:
> >> The horizontal resolution (640) for the TT High video mode (1280x960) is
> >> definitely bogus.  While fixing that, correct the timings to match the
> >> TTM195 service manual.
> >>
> >> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> >> ---
> >> Untested on actual hardware, hence the RFC.
> >>
> >> v2:
> >>   - Use correct base.
> >> ---
> >>  drivers/video/fbdev/atafb.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
> >> index f253daa05d9d3872..5ecf3ec9f94cb720 100644
> >> --- a/drivers/video/fbdev/atafb.c
> >> +++ b/drivers/video/fbdev/atafb.c
> >> @@ -495,8 +495,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
> >>              "tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
> >>              0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
> >>      }, {
> >> -            /* 1280x960, 29 kHz, 60 Hz (TT high) */
> >> -            "tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
> >> +            /* 1280x960, 72 kHz, 72 Hz (TT high) */
> >> +            "tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
> >>              0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
> >
> > Well-spotted. The change of 640 => 1280 is surely right.

TBH, I spotted that 7 years ago, but never got to looking up and calculating
the other values...

> > I have a harder time understanding why the change of pixclock from 31041
> > to 7761 is correct. All other modes have a pixclock close to or equal
> > to 32000 - so it looks strange this one is off.

32000 ps is 31.25 MHz. Looks like these are bogus, too, and only
the VGA and Falcon video modes are correct?

> According to the Profibuch the pixclock should be about 95000.

95 ns? That's a 10.5 MHz pixel clock? Definitely too low.
The TTM195 manual says 128.85 MHz.

Gr{oetje,eeting}s,

                        Geert
Andreas Schwab Nov. 2, 2020, 9:38 a.m. UTC | #4
On Nov 02 2020, Geert Uytterhoeven wrote:

> 95 ns?

No, 95 MHz.

Andreas.
Andreas Schwab Nov. 2, 2020, 9:40 a.m. UTC | #5
On Nov 02 2020, Geert Uytterhoeven wrote:

> only the VGA and Falcon video modes are correct?

The TT shifter is not programmable, so the values don't really matter.

Andreas.
Geert Uytterhoeven Nov. 2, 2020, 10:11 a.m. UTC | #6
Hi Andreas,

On Mon, Nov 2, 2020 at 10:38 AM Andreas Schwab <schwab@linux-m68k.org> wrote:
> On Nov 02 2020, Geert Uytterhoeven wrote:
>
> > 95 ns?
>
> No, 95 MHz.

http://alive.atari.org/alive6/tt3.php agrees with you

But 95 MHz sounds too low to me, and doesn't match the monitor docs.
Given the TT runs at 32 MHz, 32 * 4 = 128 MHz sounds reasonable.

Michael?

Gr{oetje,eeting}s,

                        Geert
Andreas Schwab Nov. 2, 2020, 10:29 a.m. UTC | #7
On Nov 02 2020, Geert Uytterhoeven wrote:

> But 95 MHz sounds too low to me, and doesn't match the monitor docs.
> Given the TT runs at 32 MHz, 32 * 4 = 128 MHz sounds reasonable.

Since it is not programmable, the actual value doesn't matter anyway.

Andreas.
Geert Uytterhoeven Nov. 2, 2020, 12:07 p.m. UTC | #8
Hi Andreas,

On Mon, Nov 2, 2020 at 11:29 AM Andreas Schwab <schwab@linux-m68k.org> wrote:
> On Nov 02 2020, Geert Uytterhoeven wrote:
> > But 95 MHz sounds too low to me, and doesn't match the monitor docs.
> > Given the TT runs at 32 MHz, 32 * 4 = 128 MHz sounds reasonable.
>
> Since it is not programmable, the actual value doesn't matter anyway.

It does, to implement fbdev mode rounding rules.

Gr{oetje,eeting}s,

                        Geert
Michael Schmitz Nov. 2, 2020, 6:52 p.m. UTC | #9
Hi Geert,

On 2/11/20 9:39 PM, Geert Uytterhoeven wrote:
> Hi Andreas,
>
> On Sun, Nov 1, 2020 at 1:47 PM Andreas Schwab <schwab@linux-m68k.org> wrote:
>> On Nov 01 2020, Sam Ravnborg wrote:
>>> On Sun, Nov 01, 2020 at 11:29:41AM +0100, Geert Uytterhoeven wrote:
>>>> The horizontal resolution (640) for the TT High video mode (1280x960) is
>>>> definitely bogus.  While fixing that, correct the timings to match the
>>>> TTM195 service manual.
>>>>
>>>> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
>>>> ---
>>>> Untested on actual hardware, hence the RFC.
>>>>
>>>> v2:
>>>>    - Use correct base.
>>>> ---
>>>>   drivers/video/fbdev/atafb.c | 4 ++--
>>>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
>>>> index f253daa05d9d3872..5ecf3ec9f94cb720 100644
>>>> --- a/drivers/video/fbdev/atafb.c
>>>> +++ b/drivers/video/fbdev/atafb.c
>>>> @@ -495,8 +495,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
>>>>               "tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
>>>>               0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
>>>>       }, {
>>>> -            /* 1280x960, 29 kHz, 60 Hz (TT high) */
>>>> -            "tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
>>>> +            /* 1280x960, 72 kHz, 72 Hz (TT high) */
>>>> +            "tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
>>>>               0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
>>> Well-spotted. The change of 640 => 1280 is surely right.
> TBH, I spotted that 7 years ago, but never got to looking up and calculating
> the other values...

Looks like one of my copy&paste errors that went undetected for too long...
I seem to have copied the tt-mid values above in that case.

Need to go back to the old driver to see what had been used there. A quick diff didn't show anything useful.

>>> I have a harder time understanding why the change of pixclock from 31041
>>> to 7761 is correct. All other modes have a pixclock close to or equal
>>> to 32000 - so it looks strange this one is off.
> 32000 ps is 31.25 MHz. Looks like these are bogus, too, and only
> the VGA and Falcon video modes are correct?

These were the only ones I could test (haven't seen a TT in 20 years). 
At the time I worked on the Atari FB driver, I didn't have access to the 
Profibuch either.

As Andreas mentioned, the Falcon (or external) hardware is the only one 
that can be programmed freely, so we need to work from the 95 MHz 
pixclock Andreas found. That's 10.5 ns approx.

10.5 ns * 1280 * 960 (omitting HBL and VBL timing) gives 77 Hz refresh 
so I don't think 95 MHz for 72 Hz refresh are unreasonable.

Need to look up what all the other numbers in the mode entry mean now ...

Cheers,

     Michael


>
>> According to the Profibuch the pixclock should be about 95000.
> 95 ns? That's a 10.5 MHz pixel clock? Definitely too low.
> The TTM195 manual says 128.85 MHz.
>
> Gr{oetje,eeting}s,
>
>                          Geert
>
Geert Uytterhoeven Nov. 9, 2020, 8:38 a.m. UTC | #10
Hi Andreas,

On Sun, Nov 1, 2020 at 1:47 PM Andreas Schwab <schwab@linux-m68k.org> wrote:
> On Nov 01 2020, Sam Ravnborg wrote:
> > On Sun, Nov 01, 2020 at 11:29:41AM +0100, Geert Uytterhoeven wrote:
> >> The horizontal resolution (640) for the TT High video mode (1280x960) is
> >> definitely bogus.  While fixing that, correct the timings to match the
> >> TTM195 service manual.
> >>
> >> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>

> >> --- a/drivers/video/fbdev/atafb.c
> >> +++ b/drivers/video/fbdev/atafb.c
> >> @@ -495,8 +495,8 @@ static struct fb_videomode atafb_modedb[] __initdata = {
> >>              "tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
> >>              0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
> >>      }, {
> >> -            /* 1280x960, 29 kHz, 60 Hz (TT high) */
> >> -            "tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
> >> +            /* 1280x960, 72 kHz, 72 Hz (TT high) */
> >> +            "tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
> >>              0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
> >
> > Well-spotted. The change of 640 => 1280 is surely right.
> > I have a harder time understanding why the change of pixclock from 31041
> > to 7761 is correct. All other modes have a pixclock close to or equal
> > to 32000 - so it looks strange this one is off.
>
> According to the Profibuch the pixclock should be about 95000.

Please have a look at the paragraph on p. 1052, and realize that it
fails to take into account horizontal black/sync (the actual scan line
length is 1792 not 1280 pixels) (thanks, Michael!).

Gr{oetje,eeting}s,

                        Geert
diff mbox series

Patch

diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
index f253daa05d9d3872..5ecf3ec9f94cb720 100644
--- a/drivers/video/fbdev/atafb.c
+++ b/drivers/video/fbdev/atafb.c
@@ -495,8 +495,8 @@  static struct fb_videomode atafb_modedb[] __initdata = {
 		"tt-mid", 60, 640, 480, 31041, 120, 100, 8, 16, 140, 30,
 		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
 	}, {
-		/* 1280x960, 29 kHz, 60 Hz (TT high) */
-		"tt-high", 57, 640, 960, 31041, 120, 100, 8, 16, 140, 30,
+		/* 1280x960, 72 kHz, 72 Hz (TT high) */
+		"tt-high", 57, 1280, 960, 7761, 260, 60, 36, 4, 192, 4,
 		0, FB_VMODE_NONINTERLACED | FB_VMODE_YWRAP
 	},