Kevin O'Connor wrote:
As before, the main seabios patch looks good to me. The "modehack" patch, of course, needs to be cleaned up before committing. Are you still working on this?
-Kevin
Yes, it is on my todo list. I was thinking about using a device operations structure or macros to replace the "if(hw_type)" statements. This might be overkill at the moment, however it would be helpful for any future hardware specific expansion. I am lacking insight on what such a struct should be. The following example is crafted mostly to fix the current problems I am having.
struct videoDevice { int (*present) (void); /* check for existence */ void (*enable) (int); /* enable device/mode */
void (*pre_init) (void); void (*post_init) (void); void (*set_mode) (u8 mode); struct VideoParam_s *vga_param_table[]; struct vgamode_s *vga_mode_table[];
void *hw_tables; };
struct videoDevice geodelx = { .present = legacyio_check, .pre_init = geodelx_init, .post_init = geodelx_demo, .vga_param_table = lx_param_table, .vga_mode_table = lx_mode_table, };
struct videoDevice cirrus = { .pre_init = cirrus_init, .set_mode = cirrus_set_video_mode, .hw_tables = cirrus_modes, };
struct videoDevice vbe = { .present = vbe_has_vbe_display, .enable = dispi_set_enable, .pre_init = vbe_init, .hw_tables = vbe_modes, };
Let me know what you think and I can work on a patch,
Chris Kindt