Messages in this thread | | | Subject | Re: Using s3virge card in Sun Blade 2000 | From | Alex Buell <> | Date | Thu, 06 Jan 2011 23:25:19 +0000 |
| |
On Thu, 2011-01-06 at 14:29 -0800, David Miller wrote: > You have to initialize par->state.vgabase in the s3fb driver to the > VGA area iomem pointer you calculated at boot time.
Thanks for that, I've just got past that, now it's changing modes that crashes the driver. I can load and unload the driver, and it automatically selects 640x480.
How do I track down the offending line of code from the following entry in the logs: TPC<s3fb_set_par+0x1a0/0xf78 [s3fb]>
Also, oddly enough, before calling save_vga it clears par->state, which was why it was crashing. Explicitly setting the par->state.vgabase to the vga_iobase address solved the problem as below. I also noticed that having VGA_SAVE_FONTS crashes the driver, so I left it out - a quick look through the code in vgastate.c indicate it needs rework to make it work but I've left that for later.
(in s3fb_open)
if (par->ref_count == 0) { memset(&(par->state), 0, sizeof(struct vgastate));
/* save_vga/restore_vga needs this to function */ par->state.vgabase = par->vga_iobase;
/*par->state.flags = VGA_SAVE_MODE | VGA_SAVE_FONTS | VGA_SAVE_CMAP;*/ par->state.flags = VGA_SAVE_MODE | VGA_SAVE_CMAP; par->state.num_crtc = 0x70; par->state.num_seq = 0x20; save_vga(&(par->state));
Thanks, seems it's starting to work bit by bit! -- Tactical Nuclear Kittens
| |