* [PATCH 1/3] cyber2000fb: fix machine hang on module load
@ 2010-07-31 20:55 Ondrej Zary
2010-07-31 21:21 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Ondrej Zary @ 2010-07-31 20:55 UTC (permalink / raw)
To: Russell King - ARM Linux; +Cc: linux-fbdev, Kernel development list
I was testing two CyberPro 2000 based PCI cards on x86 and the machine always
hanged completely when the cyber2000fb module was loaded. It seems that the
card hangs when some registers are accessed too quickly after writing RAMDAC
control register. With this patch, both card work.
Add delay after RAMDAC control register write to prevent hangs on module load.
Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
--- linux-2.6.35-rc2-orig/drivers/video/cyber2000fb.c 2010-06-06 05:43:24.000000000 +0200
+++ linux-2.6.35-rc3/drivers/video/cyber2000fb.c 2010-07-27 23:12:37.000000000 +0200
@@ -436,6 +436,8 @@ static void cyber2000fb_write_ramdac_ctr
cyber2000fb_writeb(i | 4, 0x3cf, cfb);
cyber2000fb_writeb(val, 0x3c6, cfb);
cyber2000fb_writeb(i, 0x3cf, cfb);
+ /* prevent card lock-up observed on x86 with CyberPro 2000 */
+ cyber2000fb_readb(0x3cf, cfb);
}
static void cyber2000fb_set_timing(struct cfb_info *cfb, struct par_info *hw)
--
Ondrej Zary
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] cyber2000fb: fix machine hang on module load
2010-07-31 20:55 [PATCH 1/3] cyber2000fb: fix machine hang on module load Ondrej Zary
@ 2010-07-31 21:21 ` Jeff Garzik
2010-07-31 21:25 ` Russell King - ARM Linux
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2010-07-31 21:21 UTC (permalink / raw)
To: Ondrej Zary
Cc: Russell King - ARM Linux, linux-fbdev, Kernel development list
On 07/31/2010 04:55 PM, Ondrej Zary wrote:
> I was testing two CyberPro 2000 based PCI cards on x86 and the machine always
> hanged completely when the cyber2000fb module was loaded. It seems that the
> card hangs when some registers are accessed too quickly after writing RAMDAC
> control register. With this patch, both card work.
>
> Add delay after RAMDAC control register write to prevent hangs on module load.
>
> Signed-off-by: Ondrej Zary<linux@rainbow-software.org>
>
> --- linux-2.6.35-rc2-orig/drivers/video/cyber2000fb.c 2010-06-06 05:43:24.000000000 +0200
> +++ linux-2.6.35-rc3/drivers/video/cyber2000fb.c 2010-07-27 23:12:37.000000000 +0200
> @@ -436,6 +436,8 @@ static void cyber2000fb_write_ramdac_ctr
> cyber2000fb_writeb(i | 4, 0x3cf, cfb);
> cyber2000fb_writeb(val, 0x3c6, cfb);
> cyber2000fb_writeb(i, 0x3cf, cfb);
> + /* prevent card lock-up observed on x86 with CyberPro 2000 */
> + cyber2000fb_readb(0x3cf, cfb);
> }
IIRC, cyber2000 is basically an S3 graphics chip. When working on s3fb,
over a decade ago, ISTR needing a lot of MMIO register flushes -- dummy
register reads -- to flush out just-written register writes.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] cyber2000fb: fix machine hang on module load
2010-07-31 21:21 ` Jeff Garzik
@ 2010-07-31 21:25 ` Russell King - ARM Linux
2010-07-31 22:37 ` Jeff Garzik
0 siblings, 1 reply; 5+ messages in thread
From: Russell King - ARM Linux @ 2010-07-31 21:25 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Ondrej Zary, linux-fbdev, Kernel development list
On Sat, Jul 31, 2010 at 05:21:33PM -0400, Jeff Garzik wrote:
> On 07/31/2010 04:55 PM, Ondrej Zary wrote:
>> I was testing two CyberPro 2000 based PCI cards on x86 and the machine always
>> hanged completely when the cyber2000fb module was loaded. It seems that the
>> card hangs when some registers are accessed too quickly after writing RAMDAC
>> control register. With this patch, both card work.
>>
>> Add delay after RAMDAC control register write to prevent hangs on module load.
>>
>> Signed-off-by: Ondrej Zary<linux@rainbow-software.org>
>>
>> --- linux-2.6.35-rc2-orig/drivers/video/cyber2000fb.c 2010-06-06 05:43:24.000000000 +0200
>> +++ linux-2.6.35-rc3/drivers/video/cyber2000fb.c 2010-07-27 23:12:37.000000000 +0200
>> @@ -436,6 +436,8 @@ static void cyber2000fb_write_ramdac_ctr
>> cyber2000fb_writeb(i | 4, 0x3cf, cfb);
>> cyber2000fb_writeb(val, 0x3c6, cfb);
>> cyber2000fb_writeb(i, 0x3cf, cfb);
>> + /* prevent card lock-up observed on x86 with CyberPro 2000 */
>> + cyber2000fb_readb(0x3cf, cfb);
>> }
>
> IIRC, cyber2000 is basically an S3 graphics chip.
No such luck. It's a proprietary Integraphics chip, mainly used in
ARM Netwinders some 10 years ago. It's completely different from the
S3 chips such as Trio64.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] cyber2000fb: fix machine hang on module load
2010-07-31 21:25 ` Russell King - ARM Linux
@ 2010-07-31 22:37 ` Jeff Garzik
2010-07-31 22:51 ` Russell King - ARM Linux
0 siblings, 1 reply; 5+ messages in thread
From: Jeff Garzik @ 2010-07-31 22:37 UTC (permalink / raw)
To: Russell King - ARM Linux
Cc: Ondrej Zary, linux-fbdev, Kernel development list
On 07/31/2010 05:25 PM, Russell King - ARM Linux wrote:
> On Sat, Jul 31, 2010 at 05:21:33PM -0400, Jeff Garzik wrote:
>> On 07/31/2010 04:55 PM, Ondrej Zary wrote:
>>> I was testing two CyberPro 2000 based PCI cards on x86 and the machine always
>>> hanged completely when the cyber2000fb module was loaded. It seems that the
>>> card hangs when some registers are accessed too quickly after writing RAMDAC
>>> control register. With this patch, both card work.
>>>
>>> Add delay after RAMDAC control register write to prevent hangs on module load.
>>>
>>> Signed-off-by: Ondrej Zary<linux@rainbow-software.org>
>>>
>>> --- linux-2.6.35-rc2-orig/drivers/video/cyber2000fb.c 2010-06-06 05:43:24.000000000 +0200
>>> +++ linux-2.6.35-rc3/drivers/video/cyber2000fb.c 2010-07-27 23:12:37.000000000 +0200
>>> @@ -436,6 +436,8 @@ static void cyber2000fb_write_ramdac_ctr
>>> cyber2000fb_writeb(i | 4, 0x3cf, cfb);
>>> cyber2000fb_writeb(val, 0x3c6, cfb);
>>> cyber2000fb_writeb(i, 0x3cf, cfb);
>>> + /* prevent card lock-up observed on x86 with CyberPro 2000 */
>>> + cyber2000fb_readb(0x3cf, cfb);
>>> }
>>
>> IIRC, cyber2000 is basically an S3 graphics chip.
>
> No such luck. It's a proprietary Integraphics chip, mainly used in
> ARM Netwinders some 10 years ago. It's completely different from the
> S3 chips such as Trio64.
Ah, I stand corrected. Maybe that was cyberfb I was remembering...
Jeff
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/3] cyber2000fb: fix machine hang on module load
2010-07-31 22:37 ` Jeff Garzik
@ 2010-07-31 22:51 ` Russell King - ARM Linux
0 siblings, 0 replies; 5+ messages in thread
From: Russell King - ARM Linux @ 2010-07-31 22:51 UTC (permalink / raw)
To: Jeff Garzik; +Cc: Ondrej Zary, linux-fbdev, Kernel development list
On Sat, Jul 31, 2010 at 06:37:27PM -0400, Jeff Garzik wrote:
> On 07/31/2010 05:25 PM, Russell King - ARM Linux wrote:
>> No such luck. It's a proprietary Integraphics chip, mainly used in
>> ARM Netwinders some 10 years ago. It's completely different from the
>> S3 chips such as Trio64.
>
> Ah, I stand corrected. Maybe that was cyberfb I was remembering...
I think so - the old cyberfb.h contained this:
-/* s3 commands */
-#define S3_BITBLT 0xc011
-#define S3_TWOPOINTLINE 0x2811
-#define S3_FILLEDRECT 0x40b1
so yes, it was similar to the S3 driver.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-07-31 22:51 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-31 20:55 [PATCH 1/3] cyber2000fb: fix machine hang on module load Ondrej Zary
2010-07-31 21:21 ` Jeff Garzik
2010-07-31 21:25 ` Russell King - ARM Linux
2010-07-31 22:37 ` Jeff Garzik
2010-07-31 22:51 ` Russell King - ARM Linux
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).