diff --git a/BaS_gcc/BaS_gcc.config b/BaS_gcc/BaS_gcc.config index 9569c01..e0284f4 100644 --- a/BaS_gcc/BaS_gcc.config +++ b/BaS_gcc/BaS_gcc.config @@ -1,3 +1,2 @@ -// ADD PREDEFINED MACROS HERE! -#define MACHINE_FIREBEE -// #define MACHINE_M5484LITE +// Add predefined macros for your project here. For example: +// #define THE_ANSWER 42 diff --git a/BaS_gcc/BaS_gcc.files b/BaS_gcc/BaS_gcc.files index 6a2b979..08f44bd 100644 --- a/BaS_gcc/BaS_gcc.files +++ b/BaS_gcc/BaS_gcc.files @@ -4,232 +4,19 @@ dma/MCD_tasks.c dma/MCD_tasksInit.c exe/basflash.c exe/basflash_start.c -flash/flash.c -flash/s19reader.c -fs/cc932.c -fs/cc936.c -fs/cc949.c -fs/cc950.c -fs/ccsbcs.c -fs/ff.c -fs/unicode.c -if/driver_vec.c -include/acia.h -include/am79c874.h -include/arp.h -include/ati_ids.h -include/bas_printf.h -include/bas_string.h -include/bas_types.h -include/bas_utils.h -include/bcm5222.h -include/bootp.h -include/cache.h -include/diskio.h -include/dma.h -include/driver_mem.h -include/driver_vec.h -include/edid.h -include/ehci.h -include/eth.h -include/exceptions.h -include/fb.h -include/fec.h -include/fecbd.h -include/ff.h -include/ffconf.h -include/firebee.h -include/font.h -include/i2c-algo-bit.h -include/i2c.h -include/icmp.h -include/ikbd.h -include/interrupts.h -include/ip.h -include/m54455.h -include/m5484l.h -include/MCD_dma.h -include/mcd_initiators.h -include/MCD_progCheck.h -include/MCD_tasksInit.h -include/MCF5475.h -include/MCF5475_CLOCK.h -include/MCF5475_CTM.h -include/MCF5475_DMA.h -include/MCF5475_DSPI.h -include/MCF5475_EPORT.h -include/MCF5475_FBCS.h -include/MCF5475_FEC.h -include/MCF5475_GPIO.h -include/MCF5475_GPT.h -include/MCF5475_I2C.h -include/MCF5475_INTC.h -include/MCF5475_MMU.h -include/MCF5475_PAD.h -include/MCF5475_PCI.h -include/MCF5475_PCIARB.h -include/MCF5475_PSC.h -include/MCF5475_SDRAMC.h -include/MCF5475_SEC.h -include/MCF5475_SIU.h -include/MCF5475_SLT.h -include/MCF5475_SRAM.h -include/MCF5475_USB.h -include/MCF5475_XLB.h -include/mmu.h -include/mod_devicetable.h -include/nbuf.h -include/net.h -include/net_timer.h -include/nif.h -include/ohci.h -include/part.h -include/pci.h -include/pci_ids.h -include/queue.h -include/radeon_reg.h -include/radeonfb.h -include/s19reader.h -include/screen.h -include/sd_card.h -include/startcf.h -include/sysinit.h -include/tftp.h -include/udp.h -include/usb.h -include/usb_defs.h -include/usb_hub.h -include/user_io.h -include/util.h -include/version.h -include/videl.h -include/video.h -include/wait.h -include/x86debug.h -include/x86decode.h -include/x86emu.h -include/x86emui.h -include/x86fpu.h -include/x86fpu_regs.h -include/x86ops.h -include/x86pcibios.h -include/x86prim_asm.h -include/x86prim_ops.h -include/x86regs.h -include/xhdi_sd.h -kbd/ikbd.c -net/am79c874.c -net/arp.c -net/bcm5222.c -net/bootp.c -net/fec.c -net/fecbd.c -net/ip.c -net/nbuf.c -net/net_timer.c -net/nif.c -net/queue.c -net/tftp.c -net/udp.c -nutil/s19header.c -pci/ehci-hcd.c -pci/ohci-hcd.c -pci/pci.c -radeon/radeon_accel.c -radeon/radeon_base.c -radeon/radeon_cursor.c -radeon/radeon_monitor.c -spi/dspi.c -spi/mmc.c -spi/sd_card.c -sys/BaS.c -sys/cache.c -sys/driver_mem.c -sys/fault_vectors.c -sys/init_fpga.c -sys/interrupts.c -sys/mmu.c -sys/sysinit.c -tos/bascook/sources/bascook.c -tos/jtagwait/include/bas_printf.h -tos/jtagwait/include/bas_string.h -tos/jtagwait/include/driver_vec.h -tos/jtagwait/include/MCF5475.h -tos/jtagwait/include/MCF5475_CLOCK.h -tos/jtagwait/include/MCF5475_CTM.h -tos/jtagwait/include/MCF5475_DMA.h -tos/jtagwait/include/MCF5475_DSPI.h -tos/jtagwait/include/MCF5475_EPORT.h -tos/jtagwait/include/MCF5475_FBCS.h -tos/jtagwait/include/MCF5475_FEC.h -tos/jtagwait/include/MCF5475_GPIO.h -tos/jtagwait/include/MCF5475_GPT.h -tos/jtagwait/include/MCF5475_I2C.h -tos/jtagwait/include/MCF5475_INTC.h -tos/jtagwait/include/MCF5475_MMU.h -tos/jtagwait/include/MCF5475_PAD.h -tos/jtagwait/include/MCF5475_PCI.h -tos/jtagwait/include/MCF5475_PCIARB.h -tos/jtagwait/include/MCF5475_PSC.h -tos/jtagwait/include/MCF5475_SDRAMC.h -tos/jtagwait/include/MCF5475_SEC.h -tos/jtagwait/include/MCF5475_SIU.h -tos/jtagwait/include/MCF5475_SLT.h -tos/jtagwait/include/MCF5475_SRAM.h -tos/jtagwait/include/MCF5475_USB.h -tos/jtagwait/include/MCF5475_XLB.h -tos/jtagwait/sources/jtagwait.c -usb/usb.c -usb/usb_hub.c -usb/usb_kbd.c -tos/jtagwait/sources/bas_printf.c -tos/jtagwait/sources/bas_string.c -tos/vmem_test/Makefile -sys/startcf.S -sys/exceptions.S -util/bas_printf.c -util/bas_string.c -util/wait.c -bas.lk.in -i2c/i2c.c -Makefile -x86emu/x86biosemu.c -x86emu/x86emu.c -x86emu/x86pcibios.c -util/libgcc_helper.S -util/setjmp.c -util/setjmp.S -include/x86emu_regs.h -x86emu/x86emu_util.c -include/setjmp.h -video/video.c -video/fbmem.c -video/fbmodedb.c -video/fbmon.c -video/fnt_st_8x16.c -video/offscreen.c -video/vdi_fill.c -video/videl.c -video/video.c -tos/jtagwait/Makefile -tos/Makefile -dma/dma.c -dma/MCD_dmaApi.c -dma/MCD_tasks.c -dma/MCD_tasksInit.c -exe/basflash.c -exe/basflash_start.c firebee/bas.elf firebee/bas.lk firebee/bas.map firebee/bas.s19 firebee/basflash.elf +firebee/basflash.lk firebee/basflash.map firebee/basflash.s19 -firebee/bashflash.lk firebee/depend +firebee/libbas.a firebee/ram.elf firebee/ram.lk +firebee/ram.map firebee/ram.s19 flash/flash.c flash/s19reader.c @@ -240,6 +27,9 @@ flash_scripts/flash_firebee_fpga.bdm flash_scripts/flash_m548x_bas.bdm flash_scripts/flash_m548x_dbug.bdm flash_scripts/flash_m548x_etos.bdm +flash_scripts/m548xlite_dbug_ram.elf +flash_scripts/m548xlite_dbug_ram.s19 +flash_scripts/run_m548x_dbug.bdm fs/cc932.c fs/cc936.c fs/cc949.c @@ -260,6 +50,8 @@ include/bas_utils.h include/bcm5222.h include/bootp.h include/cache.h +include/conout.h +include/debug.h include/diskio.h include/dma.h include/driver_mem.h @@ -320,6 +112,7 @@ include/nif.h include/ohci.h include/part.h include/pci.h +include/pci_errata.h include/pci_ids.h include/queue.h include/radeon_reg.h @@ -351,24 +144,28 @@ m54455/bas.lk m54455/bas.map m54455/bas.s19 m54455/basflash.elf +m54455/basflash.lk m54455/basflash.map m54455/basflash.s19 -m54455/bashflash.lk m54455/depend +m54455/libbas.a m54455/ram.elf m54455/ram.lk +m54455/ram.map m54455/ram.s19 m5484lite/bas.elf m5484lite/bas.lk m5484lite/bas.map m5484lite/bas.s19 m5484lite/basflash.elf +m5484lite/basflash.lk m5484lite/basflash.map m5484lite/basflash.s19 -m5484lite/bashflash.lk m5484lite/depend +m5484lite/libbas.a m5484lite/ram.elf m5484lite/ram.lk +m5484lite/ram.map m5484lite/ram.s19 net/am79c874.c net/arp.c @@ -387,11 +184,18 @@ nutil/s19header.c pci/ehci-hcd.c pci/ohci-hcd.c pci/pci.c +pci/pci_errata.c pci/pci_wrappers.S +radeon/i2c-algo-bit.c radeon/radeon_accel.c radeon/radeon_base.c radeon/radeon_cursor.c +radeon/radeon_i2c.c radeon/radeon_monitor.c +release/firebee/bas.s19 +release/m5484lite/bas.s19 +release/bascook.prg +release/readme.txt spi/dspi.c spi/mmc.c spi/sd_card.c @@ -408,8 +212,14 @@ sys/sysinit.c tos/bascook/sources/bascook.c tos/bascook/bascook.prg tos/bascook/depend -tos/bascook/Makefile tos/bascook/mapfile +tos/fpga_test/m5475/mshort/fpga_test.prg +tos/fpga_test/m5475/fpga_test.prg +tos/fpga_test/sources/fpga_test.c +tos/fpga_test/sources/ser_printf.c +tos/fpga_test/sources/vmem_test.c +tos/fpga_test/depend +tos/fpga_test/mapfile tos/jtagwait/include/bas_printf.h tos/jtagwait/include/bas_string.h tos/jtagwait/include/driver_vec.h @@ -444,318 +254,7 @@ tos/jtagwait/sources/bas_string.c tos/jtagwait/sources/jtagwait.c tos/jtagwait/sources/printf_helper.S tos/jtagwait/depend -tos/jtagwait/jtagwait.config -tos/jtagwait/jtagwait.creator -tos/jtagwait/jtagwait.creator.user -tos/jtagwait/jtagwait.files -tos/jtagwait/jtagwait.includes -tos/jtagwait/Makefile tos/jtagwait/mapfile -tos/pci_test/include/bas_string.h -tos/pci_test/include/driver_vec.h -tos/pci_test/include/MCF5475.h -tos/pci_test/include/MCF5475_CLOCK.h -tos/pci_test/include/MCF5475_CTM.h -tos/pci_test/include/MCF5475_DMA.h -tos/pci_test/include/MCF5475_DSPI.h -tos/pci_test/include/MCF5475_EPORT.h -tos/pci_test/include/MCF5475_FBCS.h -tos/pci_test/include/MCF5475_FEC.h -tos/pci_test/include/MCF5475_GPIO.h -tos/pci_test/include/MCF5475_GPT.h -tos/pci_test/include/MCF5475_I2C.h -tos/pci_test/include/MCF5475_INTC.h -tos/pci_test/include/MCF5475_MMU.h -tos/pci_test/include/MCF5475_PAD.h -tos/pci_test/include/MCF5475_PCI.h -tos/pci_test/include/MCF5475_PCIARB.h -tos/pci_test/include/MCF5475_PSC.h -tos/pci_test/include/MCF5475_SDRAMC.h -tos/pci_test/include/MCF5475_SEC.h -tos/pci_test/include/MCF5475_SIU.h -tos/pci_test/include/MCF5475_SLT.h -tos/pci_test/include/MCF5475_SRAM.h -tos/pci_test/include/MCF5475_USB.h -tos/pci_test/include/MCF5475_XLB.h -tos/pci_test/m5475/mshort/pci_test.prg -tos/pci_test/m5475/pci_test.prg -tos/pci_test/sources/pci_test.c -tos/pci_test/sources/printf_helper.S -tos/pci_test/depend -tos/pci_test/Makefile -tos/pci_test/mapfile -tos/pci_test/pci_test.config -tos/pci_test/pci_test.creator -tos/pci_test/pci_test.files -tos/pci_test/pci_test.includes -tos/vmem_test/include/bas_printf.h -tos/vmem_test/include/bas_string.h -tos/vmem_test/include/driver_vec.h -tos/vmem_test/include/MCF5475.h -tos/vmem_test/include/MCF5475_CLOCK.h -tos/vmem_test/include/MCF5475_CTM.h -tos/vmem_test/include/MCF5475_DMA.h -tos/vmem_test/include/MCF5475_DSPI.h -tos/vmem_test/include/MCF5475_EPORT.h -tos/vmem_test/include/MCF5475_FBCS.h -tos/vmem_test/include/MCF5475_FEC.h -tos/vmem_test/include/MCF5475_GPIO.h -tos/vmem_test/include/MCF5475_GPT.h -tos/vmem_test/include/MCF5475_I2C.h -tos/vmem_test/include/MCF5475_INTC.h -tos/vmem_test/include/MCF5475_MMU.h -tos/vmem_test/include/MCF5475_PAD.h -tos/vmem_test/include/MCF5475_PCI.h -tos/vmem_test/include/MCF5475_PCIARB.h -tos/vmem_test/include/MCF5475_PSC.h -tos/vmem_test/include/MCF5475_SDRAMC.h -tos/vmem_test/include/MCF5475_SEC.h -tos/vmem_test/include/MCF5475_SIU.h -tos/vmem_test/include/MCF5475_SLT.h -tos/vmem_test/include/MCF5475_SRAM.h -tos/vmem_test/include/MCF5475_USB.h -tos/vmem_test/include/MCF5475_XLB.h -tos/vmem_test/m5475/mshort/vmem_test.prg -tos/vmem_test/m5475/vmem_test.prg -tos/vmem_test/Makefile -tos/vmem_test/mapfile -tos/vmem_test/vmem_test.config -tos/vmem_test/vmem_test.creator -tos/vmem_test/vmem_test.files -tos/vmem_test/vmem_test.includes -tos/Makefile -usb/usb.c -usb/usb_hub.c -usb/usb_kbd.c -usb/usb_mouse.c -util/bas_printf.c -util/bas_string.c -util/libgcc_helper.S -util/setjmp.S -util/wait.c -video/fbmem.c -video/fbmodedb.c -video/fbmon.c -video/fnt_st_8x16.c -video/offscreen.c -video/vdi_fill.c -video/videl.c -video/video.c -x86emu/x86biosemu.c -x86emu/x86emu.c -x86emu/x86emu_util.c -x86emu/x86pcibios.c -xhdi/xhdi_interface.c -xhdi/xhdi_sd.c -xhdi/xhdi_vec.S -bas.lk.in -bas_firebee.bdm -BaS_gcc.config -BaS_gcc.creator -BaS_gcc.creator.user -BaS_gcc.creator.user.3.2-pre1 -BaS_gcc.creator.user.ori -BaS_gcc.files -BaS_gcc.includes -bas_m5484.bdm -basflash.lk.in -check.bdm -COPYING -COPYING.LESSER -Doxyfile -dump.bdm -Makefile -mcf5474.gdb -tos/pci_test/include/bas_printf.h -tos/pci_test/include/bas_string.h -tos/pci_test/include/driver_vec.h -tos/pci_test/include/MCF5475_CLOCK.h -tos/pci_test/include/MCF5475_CTM.h -tos/pci_test/include/MCF5475_DMA.h -tos/pci_test/include/MCF5475_DSPI.h -tos/pci_test/include/MCF5475_EPORT.h -tos/pci_test/include/MCF5475_FBCS.h -tos/pci_test/include/MCF5475_FEC.h -tos/pci_test/include/MCF5475_GPIO.h -tos/pci_test/include/MCF5475_GPT.h -tos/pci_test/include/MCF5475_I2C.h -tos/pci_test/include/MCF5475_INTC.h -tos/pci_test/include/MCF5475_MMU.h -tos/pci_test/include/MCF5475_PAD.h -tos/pci_test/include/MCF5475_PCI.h -tos/pci_test/include/MCF5475_PCIARB.h -tos/pci_test/include/MCF5475_PSC.h -tos/pci_test/include/MCF5475_SDRAMC.h -tos/pci_test/include/MCF5475_SEC.h -tos/pci_test/include/MCF5475_SIU.h -tos/pci_test/include/MCF5475_SLT.h -tos/pci_test/include/MCF5475_SRAM.h -tos/pci_test/include/MCF5475_USB.h -tos/pci_test/include/MCF5475_XLB.h -tos/pci_test/include/MCF5475.h -tos/pci_test/include/pci.h -memory_map.txt -pci/pci_errata.c -include/pci_errata.h -tos/bascook/sources/bascook.c -tos/bascook/Makefile -tos/fpga_test/Makefile -tos/jtagwait/include/bas_printf.h -tos/jtagwait/include/bas_string.h -tos/jtagwait/include/driver_vec.h -tos/jtagwait/include/MCF5475.h -tos/jtagwait/include/MCF5475_CLOCK.h -tos/jtagwait/include/MCF5475_CTM.h -tos/jtagwait/include/MCF5475_DMA.h -tos/jtagwait/include/MCF5475_DSPI.h -tos/jtagwait/include/MCF5475_EPORT.h -tos/jtagwait/include/MCF5475_FBCS.h -tos/jtagwait/include/MCF5475_FEC.h -tos/jtagwait/include/MCF5475_GPIO.h -tos/jtagwait/include/MCF5475_GPT.h -tos/jtagwait/include/MCF5475_I2C.h -tos/jtagwait/include/MCF5475_INTC.h -tos/jtagwait/include/MCF5475_MMU.h -tos/jtagwait/include/MCF5475_PAD.h -tos/jtagwait/include/MCF5475_PCI.h -tos/jtagwait/include/MCF5475_PCIARB.h -tos/jtagwait/include/MCF5475_PSC.h -tos/jtagwait/include/MCF5475_SDRAMC.h -tos/jtagwait/include/MCF5475_SEC.h -tos/jtagwait/include/MCF5475_SIU.h -tos/jtagwait/include/MCF5475_SLT.h -tos/jtagwait/include/MCF5475_SRAM.h -tos/jtagwait/include/MCF5475_USB.h -tos/jtagwait/include/MCF5475_XLB.h -tos/jtagwait/sources/bas_printf.c -tos/jtagwait/sources/bas_string.c -tos/jtagwait/sources/jtagwait.c -tos/jtagwait/sources/printf_helper.S -tos/jtagwait/Makefile -tos/pci_test/include/bas_printf.h -tos/pci_test/include/bas_string.h -tos/pci_test/include/driver_vec.h -tos/pci_test/include/MCF5475.h -tos/pci_test/include/MCF5475_CLOCK.h -tos/pci_test/include/MCF5475_CTM.h -tos/pci_test/include/MCF5475_DMA.h -tos/pci_test/include/MCF5475_DSPI.h -tos/pci_test/include/MCF5475_EPORT.h -tos/pci_test/include/MCF5475_FBCS.h -tos/pci_test/include/MCF5475_FEC.h -tos/pci_test/include/MCF5475_GPIO.h -tos/pci_test/include/MCF5475_GPT.h -tos/pci_test/include/MCF5475_I2C.h -tos/pci_test/include/MCF5475_INTC.h -tos/pci_test/include/MCF5475_MMU.h -tos/pci_test/include/MCF5475_PAD.h -tos/pci_test/include/MCF5475_PCI.h -tos/pci_test/include/MCF5475_PCIARB.h -tos/pci_test/include/MCF5475_PSC.h -tos/pci_test/include/MCF5475_SDRAMC.h -tos/pci_test/include/MCF5475_SEC.h -tos/pci_test/include/MCF5475_SIU.h -tos/pci_test/include/MCF5475_SLT.h -tos/pci_test/include/MCF5475_SRAM.h -tos/pci_test/include/MCF5475_USB.h -tos/pci_test/include/MCF5475_XLB.h -tos/pci_test/include/pci.h -tos/pci_test/sources/bas_printf.c -tos/pci_test/sources/bas_string.c -tos/pci_test/sources/pci_test.c -tos/pci_test/sources/printf_helper.S -tos/pci_test/Makefile -tos/vmem_test/include/bas_printf.h -tos/vmem_test/include/bas_string.h -tos/vmem_test/include/driver_vec.h -tos/vmem_test/include/MCF5475.h -tos/vmem_test/include/MCF5475_CLOCK.h -tos/vmem_test/include/MCF5475_CTM.h -tos/vmem_test/include/MCF5475_DMA.h -tos/vmem_test/include/MCF5475_DSPI.h -tos/vmem_test/include/MCF5475_EPORT.h -tos/vmem_test/include/MCF5475_FBCS.h -tos/vmem_test/include/MCF5475_FEC.h -tos/vmem_test/include/MCF5475_GPIO.h -tos/vmem_test/include/MCF5475_GPT.h -tos/vmem_test/include/MCF5475_I2C.h -tos/vmem_test/include/MCF5475_INTC.h -tos/vmem_test/include/MCF5475_MMU.h -tos/vmem_test/include/MCF5475_PAD.h -tos/vmem_test/include/MCF5475_PCI.h -tos/vmem_test/include/MCF5475_PCIARB.h -tos/vmem_test/include/MCF5475_PSC.h -tos/vmem_test/include/MCF5475_SDRAMC.h -tos/vmem_test/include/MCF5475_SEC.h -tos/vmem_test/include/MCF5475_SIU.h -tos/vmem_test/include/MCF5475_SLT.h -tos/vmem_test/include/MCF5475_SRAM.h -tos/vmem_test/include/MCF5475_USB.h -tos/vmem_test/include/MCF5475_XLB.h -tos/vmem_test/sources/fpga_test.c -tos/vmem_test/Makefile -tos/Makefile -tos/fpga_test/sources/fpga_test.c -include/debug.h -tos/bascook/sources/bascook.c -tos/bascook/Makefile -tos/fpga_test/include/bas_string.h -tos/fpga_test/include/MCF5475.h -tos/fpga_test/include/MCF5475_CLOCK.h -tos/fpga_test/include/MCF5475_FEC.h -tos/fpga_test/include/MCF5475_GPIO.h -tos/fpga_test/include/MCF5475_GPT.h -tos/fpga_test/include/MCF5475_I2C.h -tos/fpga_test/include/MCF5475_INTC.h -tos/fpga_test/include/MCF5475_MMU.h -tos/fpga_test/include/MCF5475_PAD.h -tos/fpga_test/include/MCF5475_PCI.h -tos/fpga_test/include/MCF5475_PCIARB.h -tos/fpga_test/include/MCF5475_PSC.h -tos/fpga_test/include/MCF5475_SDRAMC.h -tos/fpga_test/include/MCF5475_SEC.h -tos/fpga_test/include/MCF5475_SIU.h -tos/fpga_test/include/MCF5475_SLT.h -tos/fpga_test/include/MCF5475_SRAM.h -tos/fpga_test/include/MCF5475_USB.h -tos/fpga_test/include/MCF5475_XLB.h -tos/fpga_test/sources/bas_printf.c -tos/fpga_test/sources/bas_string.c -tos/fpga_test/sources/fpga_test.c -tos/fpga_test/sources/printf_helper.S -tos/fpga_test/Makefile -tos/jtagwait/include/bas_printf.h -tos/jtagwait/include/bas_string.h -tos/jtagwait/include/driver_vec.h -tos/jtagwait/include/MCF5475.h -tos/jtagwait/include/MCF5475_CLOCK.h -tos/jtagwait/include/MCF5475_CTM.h -tos/jtagwait/include/MCF5475_DMA.h -tos/jtagwait/include/MCF5475_DSPI.h -tos/jtagwait/include/MCF5475_EPORT.h -tos/jtagwait/include/MCF5475_FBCS.h -tos/jtagwait/include/MCF5475_FEC.h -tos/jtagwait/include/MCF5475_GPIO.h -tos/jtagwait/include/MCF5475_GPT.h -tos/jtagwait/include/MCF5475_I2C.h -tos/jtagwait/include/MCF5475_INTC.h -tos/jtagwait/include/MCF5475_MMU.h -tos/jtagwait/include/MCF5475_PAD.h -tos/jtagwait/include/MCF5475_PCI.h -tos/jtagwait/include/MCF5475_PCIARB.h -tos/jtagwait/include/MCF5475_PSC.h -tos/jtagwait/include/MCF5475_SDRAMC.h -tos/jtagwait/include/MCF5475_SEC.h -tos/jtagwait/include/MCF5475_SIU.h -tos/jtagwait/include/MCF5475_SLT.h -tos/jtagwait/include/MCF5475_SRAM.h -tos/jtagwait/include/MCF5475_USB.h -tos/jtagwait/include/MCF5475_XLB.h -tos/jtagwait/sources/bas_printf.c -tos/jtagwait/sources/bas_string.c -tos/jtagwait/sources/jtagwait.c -tos/jtagwait/sources/printf_helper.S -tos/jtagwait/Makefile tos/pci_mem/include/bas_string.h tos/pci_mem/include/bas_types.h tos/pci_mem/include/driver_vec.h @@ -785,8 +284,11 @@ tos/pci_mem/include/MCF5475_USB.h tos/pci_mem/include/MCF5475_XLB.h tos/pci_mem/include/pci.h tos/pci_mem/include/util.h +tos/pci_mem/m5475/mshort/pci_mem.prg +tos/pci_mem/m5475/pci_mem.prg tos/pci_mem/sources/pci_mem.c -tos/pci_mem/Makefile +tos/pci_mem/depend +tos/pci_mem/mapfile tos/pci_test/include/bas_string.h tos/pci_test/include/bas_types.h tos/pci_test/include/driver_vec.h @@ -816,9 +318,12 @@ tos/pci_test/include/MCF5475_USB.h tos/pci_test/include/MCF5475_XLB.h tos/pci_test/include/pci.h tos/pci_test/include/util.h +tos/pci_test/m5475/mshort/pci_test.prg +tos/pci_test/m5475/pci_test.prg tos/pci_test/sources/pci_test.c tos/pci_test/sources/printf_helper.S -tos/pci_test/Makefile +tos/pci_test/depend +tos/pci_test/mapfile tos/vmem_test/include/bas_printf.h tos/vmem_test/include/bas_string.h tos/vmem_test/include/driver_vec.h @@ -846,15 +351,47 @@ tos/vmem_test/include/MCF5475_SLT.h tos/vmem_test/include/MCF5475_SRAM.h tos/vmem_test/include/MCF5475_USB.h tos/vmem_test/include/MCF5475_XLB.h +tos/vmem_test/m5475/mshort/vmem_test.prg +tos/vmem_test/m5475/vmem_test.prg tos/vmem_test/sources/bas_printf.c tos/vmem_test/sources/bas_string.c tos/vmem_test/sources/printf_helper.S tos/vmem_test/sources/vmem_test.c -tos/vmem_test/Makefile -tos/Makefile -radeon/radeon_i2c.c -basflash.lk.in -radeon/i2c-algo-bit.c +tos/vmem_test/depend +tos/vmem_test/mapfile +usb/usb.c +usb/usb_hub.c +usb/usb_kbd.c +usb/usb_mouse.c +util/bas_printf.c +util/bas_string.c util/conout.c -include/conout.h -tos/fpga_test/sources/ser_printf.c +util/libgcc_helper.S +util/setjmp.S +util/wait.c +video/fbmem.c +video/fbmodedb.c +video/fbmon.c +video/fnt_st_8x16.c +video/offscreen.c +video/vdi_fill.c +video/videl.c +video/video.c +x86emu/x86biosemu.c +x86emu/x86emu.c +x86emu/x86emu_util.c +x86emu/x86pcibios.c +xhdi/xhdi_interface.c +xhdi/xhdi_sd.c +xhdi/xhdi_vec.S +bas.lk.in +bas_firebee.bdm +bas_m5484.bdm +basflash.lk.in +check.bdm +COPYING +COPYING.LESSER +Doxyfile +dump.bdm +mcf5474.gdb +memory_map.txt diff --git a/BaS_gcc/BaS_gcc.includes b/BaS_gcc/BaS_gcc.includes index edd3421..76956f3 100644 --- a/BaS_gcc/BaS_gcc.includes +++ b/BaS_gcc/BaS_gcc.includes @@ -1,55 +1,5 @@ -include -tos/jtagwait/include -tos/pci_test/include -/usr/m68k-atari-mint/include -/opt/cross-mint/m68k-atari-mint/include -/opt/gygwin/opt/cross-mint/m68k-atari-mint/include -/opt/m68k-elf/include -/opt/cygwin/opt/m68k-elf/include -/opt/cygwin/opt/m68k-elf/lib/gcc/m68k-elf/4.6.4/include -dma -m54455 -sys -pci -tos/pci_test -tos/jtagwait/m5475/mshort -m5484lite -tos/pci_test/include -tos/bascook -tos/vmem_test/m5475/mshort -i2c -fs -tos/vmem_test/m5475 -tos/pci_test/m5475 -spi -if -tos/jtagwait/m5475 -util -kbd -flash_scripts -video -usb -exe -tos/vmem_test/sources -tos -nutil -tos/jtagwait/sources -x86emu -flash -tos/vmem_test/include -tos/bascook/sources -tos/pci_test/m5475/mshort -. -radeon -net -xhdi -tos/vmem_test -tos/pci_test/sources -firebee -tos/jtagwait -tos/fpga_test/include -tos/fpga_test -tos/fpga_test/sources -tos/pci_mem -tos/pci_mem/include -tos/pci_mem/sources +include +tos/jtagwait/include +tos/pci_mem/include +tos/pci_test/include +tos/vmem_test/include \ No newline at end of file diff --git a/BaS_gcc/Makefile b/BaS_gcc/Makefile index 3970dbf..0645cee 100644 --- a/BaS_gcc/Makefile +++ b/BaS_gcc/Makefile @@ -8,9 +8,8 @@ # installation, but allows source level debugging over BDM with a recent gdb (tested with 7.5), # the m68k BDM tools from sourceforge (http://bdm.sourceforge.net) and a BDM pod (TBLCF and P&E tested). -VERBOSE=N -ifneq (Y,$(VERBOSE)) +ifneq (yes,$(VERBOSE)) Q=@ else Q= diff --git a/BaS_gcc/include/fb.h b/BaS_gcc/include/fb.h index 42ab660..634bb94 100644 --- a/BaS_gcc/include/fb.h +++ b/BaS_gcc/include/fb.h @@ -513,7 +513,7 @@ extern void offscreen_init(struct fb_info *info); #define FB_MODE_IS_FROM_VAR 32 extern void fb_destroy_modedb(struct fb_videomode *modedb); -extern int32_t fb_parse_edid(uint8_t *edid, struct fb_var_screeninfo *var); +extern int fb_parse_edid(uint8_t *edid, struct fb_var_screeninfo *var); extern void fb_edid_to_monspecs(uint8_t *edid, struct fb_monspecs *specs); extern int32_t fb_get_mode(int32_t flags, uint32_t val, struct fb_var_screeninfo *var, struct fb_info *info); extern int32_t fb_validate_mode(const struct fb_var_screeninfo *var, struct fb_info *info); diff --git a/BaS_gcc/video/fbmem.c b/BaS_gcc/video/fbmem.c index f608d5a..922eb53 100644 --- a/BaS_gcc/video/fbmem.c +++ b/BaS_gcc/video/fbmem.c @@ -46,6 +46,7 @@ int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var) if ((err = info->fbops->fb_pan_display(var, info))) { dbg("fb_pan_display returned %d\r\n", err); + return err; } @@ -55,6 +56,7 @@ int fb_pan_display(struct fb_info *info, struct fb_var_screeninfo *var) info->var.vmode |= FB_VMODE_YWRAP; else info->var.vmode &= ~FB_VMODE_YWRAP; + return 0; } @@ -67,6 +69,7 @@ int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) if (var->activate & FB_ACTIVATE_INV_MODE) { dbg("invalid mode\r\n"); + return !memcmp((char *) &info->var, (char *) var, sizeof(struct fb_var_screeninfo)); } @@ -76,6 +79,7 @@ int fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var) if ((err = info->fbops->fb_check_var(var, info))) { dbg("fb_check_var failed\r\n"); + return err; } @@ -96,7 +100,8 @@ int fb_blank(struct fb_info *info, int blank) dbg("\r\n"); if (blank > FB_BLANK_POWERDOWN) blank = FB_BLANK_POWERDOWN; - return(info->fbops->fb_blank(blank, info)); + + return info->fbops->fb_blank(blank, info); } int fb_ioctl(struct fb_info *info, uint32_t cmd, uint32_t arg) @@ -111,6 +116,7 @@ int fb_ioctl(struct fb_info *info, uint32_t cmd, uint32_t arg) { case FBIOGET_VSCREENINFO: memcpy(argp, &info->var, sizeof(var)); + return 0; case FBIOPUT_VSCREENINFO: @@ -119,10 +125,12 @@ int fb_ioctl(struct fb_info *info, uint32_t cmd, uint32_t arg) if (i) return i; memcpy(argp, &var, sizeof(var)); + return 0; case FBIOGET_FSCREENINFO: memcpy(argp, &info->fix, sizeof(fix)); + return 0; case FBIOPAN_DISPLAY: @@ -131,6 +139,7 @@ int fb_ioctl(struct fb_info *info, uint32_t cmd, uint32_t arg) if (i) return i; memcpy(argp, &var, sizeof(var)); + return 0; case FBIOBLANK: @@ -138,13 +147,13 @@ int fb_ioctl(struct fb_info *info, uint32_t cmd, uint32_t arg) return i; case FBIO_ALLOC: - return(offscreen_alloc(info, arg)); + return offscreen_alloc(info, arg); case FBIO_FREE: - return(offscreen_free(info, (void *) arg)); + return offscreen_free(info, (void *) arg); default: - return(info->fbops->fb_ioctl(cmd, arg, info)); + return info->fbops->fb_ioctl(cmd, arg, info); } } @@ -172,6 +181,7 @@ struct fb_info *framebuffer_alloc(uint32_t size) extern struct fb_info *info_fb; dbg("\r\n"); + return info_fb; } @@ -187,6 +197,7 @@ struct fb_info *framebuffer_alloc(uint32_t size) void framebuffer_release(struct fb_info *info) { dbg("\r\n"); + driver_mem_free(info->par); } diff --git a/BaS_gcc/video/fbmodedb.c b/BaS_gcc/video/fbmodedb.c index 841c352..be41fde 100644 --- a/BaS_gcc/video/fbmodedb.c +++ b/BaS_gcc/video/fbmodedb.c @@ -32,292 +32,292 @@ const struct fb_videomode modedb[] = { -{ - /* 640x400 @ 70 Hz, 31.5 kHz hsync */ - 70, 640, 400, 39721, 40, 24, 39, 9, 96, 2, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 640x480 @ 60 Hz, 31.5 kHz hsync */ - 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 800x600 @ 56 Hz, 35.15 kHz hsync */ - 56, 800, 600, 27777, 128, 24, 22, 1, 72, 2, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync */ - 87, 1024, 768, 22271, 56, 24, 33, 8, 160, 8, - 0, FB_VMODE_INTERLACED -}, -{ - /* 640x400 @ 85 Hz, 37.86 kHz hsync */ - 85, 640, 400, 31746, 96, 32, 41, 1, 64, 3, - FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 640x480 @ 72 Hz, 36.5 kHz hsync */ - 72, 640, 480, 31746, 144, 40, 30, 8, 40, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 640x480 @ 75 Hz, 37.50 kHz hsync */ - 75, 640, 480, 31746, 120, 16, 16, 1, 64, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 800x600 @ 60 Hz, 37.8 kHz hsync */ - 60, 800, 600, 25000, 88, 40, 23, 1, 128, 4, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 640x480 @ 85 Hz, 43.27 kHz hsync */ - 85, 640, 480, 27777, 80, 56, 25, 1, 56, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 89 Hz interlaced, 44 kHz hsync */ - 69, 1152, 864, 15384, 96, 16, 110, 1, 216, 10, - 0, FB_VMODE_INTERLACED -}, -{ - /* 800x600 @ 72 Hz, 48.0 kHz hsync */ - 72, 800, 600, 20000, 64, 56, 23, 37, 120, 6, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 60 Hz, 48.4 kHz hsync */ - 60, 1024, 768, 15384, 168, 8, 29, 3, 144, 6, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 640x480 @ 100 Hz, 53.01 kHz hsync */ - 100, 640, 480, 21834, 96, 32, 36, 8, 96, 6, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 60 Hz, 53.5 kHz hsync */ - 60, 1152, 864, 11123, 208, 64, 16, 4, 256, 8, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 800x600 @ 85 Hz, 55.84 kHz hsync */ - 85, 800, 600, 16460, 160, 64, 36, 16, 64, 5, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 70 Hz, 56.5 kHz hsync */ - 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */ - 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12, - 0, FB_VMODE_INTERLACED -}, -{ - /* 800x600 @ 100 Hz, 64.02 kHz hsync */ - 100, 800, 600, 14357, 160, 64, 30, 4, 64, 6, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 76 Hz, 62.5 kHz hsync */ - 76, 1024, 768, 11764, 208, 8, 36, 16, 120, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 70 Hz, 62.4 kHz hsync */ - 70, 1152, 864, 10869, 106, 56, 20, 1, 160, 10, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 61 Hz, 64.2 kHz hsync */ - 61, 1280, 1024, 9090, 200, 48, 26, 1, 184, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1400x1050 @ 60Hz, 63.9 kHz hsync */ - 68, 1400, 1050, 9259, 136, 40, 13, 1, 112, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1400x1050 @ 75,107 Hz, 82,392 kHz +hsync +vsync*/ - 75, 1400, 1050, 9271, 120, 56, 13, 0, 112, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1400x1050 @ 60 Hz, ? kHz +hsync +vsync*/ - 60, 1400, 1050, 9259, 128, 40, 12, 0, 112, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 85 Hz, 70.24 kHz hsync */ - 85, 1024, 768, 10111, 192, 32, 34, 14, 160, 6, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 78 Hz, 70.8 kHz hsync */ - 78, 1152, 864, 9090, 228, 88, 32, 0, 84, 12, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 70 Hz, 74.59 kHz hsync */ - 70, 1280, 1024, 7905, 224, 32, 28, 8, 160, 8, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1600x1200 @ 60Hz, 75.00 kHz hsync */ - 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 84 Hz, 76.0 kHz hsync */ - 84, 1152, 864, 7407, 184, 312, 32, 0, 128, 12, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 74 Hz, 78.85 kHz hsync */ - 74, 1280, 1024, 7407, 256, 32, 34, 3, 144, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1024x768 @ 100Hz, 80.21 kHz hsync */ - 100, 1024, 768, 8658, 192, 32, 21, 3, 192, 10, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 76 Hz, 81.13 kHz hsync */ - 76, 1280, 1024, 7407, 248, 32, 34, 3, 104, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1600x1200 @ 70 Hz, 87.50 kHz hsync */ - 70, 1600, 1200, 5291, 304, 64, 46, 1, 192, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1152x864 @ 100 Hz, 89.62 kHz hsync */ - 100, 1152, 864, 7264, 224, 32, 17, 2, 128, 19, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 85 Hz, 91.15 kHz hsync */ - 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1600x1200 @ 75 Hz, 93.75 kHz hsync */ - 75, 1600, 1200, 4938, 304, 64, 46, 1, 192, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1600x1200 @ 85 Hz, 105.77 kHz hsync */ - 85, 1600, 1200, 4545, 272, 16, 37, 4, 192, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x1024 @ 100 Hz, 107.16 kHz hsync */ - 100, 1280, 1024, 5502, 256, 32, 26, 7, 128, 15, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1800x1440 @ 64Hz, 96.15 kHz hsync */ - 64, 1800, 1440, 4347, 304, 96, 46, 1, 192, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1800x1440 @ 70Hz, 104.52 kHz hsync */ - 70, 1800, 1440, 4000, 304, 96, 46, 1, 192, 3, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 512x384 @ 78 Hz, 31.50 kHz hsync */ - 78, 512, 384, 49603, 48, 16, 16, 1, 64, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 512x384 @ 85 Hz, 34.38 kHz hsync */ - 85, 512, 384, 45454, 48, 16, 16, 1, 64, 3, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio */ - 70, 320, 200, 79440, 16, 16, 20, 4, 48, 1, - 0, FB_VMODE_DOUBLE -}, -{ - /* 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio */ - 60, 320, 240, 79440, 16, 16, 16, 5, 48, 1, - 0, FB_VMODE_DOUBLE -}, -{ - /* 320x240 @ 72 Hz, 36.5 kHz hsync */ - 72, 320, 240, 63492, 16, 16, 16, 4, 48, 2, - 0, FB_VMODE_DOUBLE -}, -{ - /* 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio */ - 56, 400, 300, 55555, 64, 16, 10, 1, 32, 1, - 0, FB_VMODE_DOUBLE -}, -{ - /* 400x300 @ 60 Hz, 37.8 kHz hsync */ - 60, 400, 300, 50000, 48, 16, 11, 1, 64, 2, - 0, FB_VMODE_DOUBLE -}, -{ - /* 400x300 @ 72 Hz, 48.0 kHz hsync */ - 72, 400, 300, 40000, 32, 24, 11, 19, 64, 3, - 0, FB_VMODE_DOUBLE -}, -{ - /* 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio */ - 56, 480, 300, 46176, 80, 16, 10, 1, 40, 1, - 0, FB_VMODE_DOUBLE -}, -{ - /* 480x300 @ 60 Hz, 37.8 kHz hsync */ - 60, 480, 300, 41858, 56, 16, 11, 1, 80, 2, - 0, FB_VMODE_DOUBLE -}, -{ - /* 480x300 @ 63 Hz, 39.6 kHz hsync */ - 63, 480, 300, 40000, 56, 16, 11, 1, 80, 2, - 0, FB_VMODE_DOUBLE -}, -{ - /* 480x300 @ 72 Hz, 48.0 kHz hsync */ - 72, 480, 300, 33386, 40, 24, 11, 19, 80, 3, - 0, FB_VMODE_DOUBLE -}, -{ - /* 1920x1200 @ 60 Hz, 74.5 Khz hsync */ - 60, 1920, 1200, 5177, 128, 336, 1, 38, 208, 3, - FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, - FB_VMODE_NONINTERLACED -}, -{ - /* 1152x768, 60 Hz, PowerBook G4 Titanium I and II */ - 60, 1152, 768, 14047, 158, 26, 29, 3, 136, 6, - FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED -}, -{ - /* 1920x1080, 60 Hz, 1080pf */ - 60, 1920, 1080, 6741, 148, 44, 36, 4, 88, 5, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1366x768, 60 Hz, 47.403 kHz hsync, WXGA 16:9 aspect ratio */ - 60, 1366, 768, 13806, 120, 10, 14, 3, 32, 5, - 0, FB_VMODE_NONINTERLACED -}, -{ - /* 1280x800, 60 Hz, 47.403 kHz hsync, WXGA 16:10 aspect ratio */ - 60, 1280, 800, 12048, 200, 64, 24, 1, 136, 3, - 0, FB_VMODE_NONINTERLACED -}, + { + /* 640x400 @ 70 Hz, 31.5 kHz hsync */ + 70, 640, 400, 39721, 40, 24, 39, 9, 96, 2, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 640x480 @ 60 Hz, 31.5 kHz hsync */ + 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 800x600 @ 56 Hz, 35.15 kHz hsync */ + 56, 800, 600, 27777, 128, 24, 22, 1, 72, 2, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync */ + 87, 1024, 768, 22271, 56, 24, 33, 8, 160, 8, + 0, FB_VMODE_INTERLACED + }, + { + /* 640x400 @ 85 Hz, 37.86 kHz hsync */ + 85, 640, 400, 31746, 96, 32, 41, 1, 64, 3, + FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 640x480 @ 72 Hz, 36.5 kHz hsync */ + 72, 640, 480, 31746, 144, 40, 30, 8, 40, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 640x480 @ 75 Hz, 37.50 kHz hsync */ + 75, 640, 480, 31746, 120, 16, 16, 1, 64, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 800x600 @ 60 Hz, 37.8 kHz hsync */ + 60, 800, 600, 25000, 88, 40, 23, 1, 128, 4, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 640x480 @ 85 Hz, 43.27 kHz hsync */ + 85, 640, 480, 27777, 80, 56, 25, 1, 56, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 89 Hz interlaced, 44 kHz hsync */ + 69, 1152, 864, 15384, 96, 16, 110, 1, 216, 10, + 0, FB_VMODE_INTERLACED + }, + { + /* 800x600 @ 72 Hz, 48.0 kHz hsync */ + 72, 800, 600, 20000, 64, 56, 23, 37, 120, 6, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 60 Hz, 48.4 kHz hsync */ + 60, 1024, 768, 15384, 168, 8, 29, 3, 144, 6, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 640x480 @ 100 Hz, 53.01 kHz hsync */ + 100, 640, 480, 21834, 96, 32, 36, 8, 96, 6, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 60 Hz, 53.5 kHz hsync */ + 60, 1152, 864, 11123, 208, 64, 16, 4, 256, 8, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 800x600 @ 85 Hz, 55.84 kHz hsync */ + 85, 800, 600, 16460, 160, 64, 36, 16, 64, 5, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 70 Hz, 56.5 kHz hsync */ + 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */ + 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12, + 0, FB_VMODE_INTERLACED + }, + { + /* 800x600 @ 100 Hz, 64.02 kHz hsync */ + 100, 800, 600, 14357, 160, 64, 30, 4, 64, 6, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 76 Hz, 62.5 kHz hsync */ + 76, 1024, 768, 11764, 208, 8, 36, 16, 120, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 70 Hz, 62.4 kHz hsync */ + 70, 1152, 864, 10869, 106, 56, 20, 1, 160, 10, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 61 Hz, 64.2 kHz hsync */ + 61, 1280, 1024, 9090, 200, 48, 26, 1, 184, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1400x1050 @ 60Hz, 63.9 kHz hsync */ + 68, 1400, 1050, 9259, 136, 40, 13, 1, 112, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1400x1050 @ 75,107 Hz, 82,392 kHz +hsync +vsync*/ + 75, 1400, 1050, 9271, 120, 56, 13, 0, 112, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1400x1050 @ 60 Hz, ? kHz +hsync +vsync*/ + 60, 1400, 1050, 9259, 128, 40, 12, 0, 112, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 85 Hz, 70.24 kHz hsync */ + 85, 1024, 768, 10111, 192, 32, 34, 14, 160, 6, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 78 Hz, 70.8 kHz hsync */ + 78, 1152, 864, 9090, 228, 88, 32, 0, 84, 12, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 70 Hz, 74.59 kHz hsync */ + 70, 1280, 1024, 7905, 224, 32, 28, 8, 160, 8, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1600x1200 @ 60Hz, 75.00 kHz hsync */ + 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 84 Hz, 76.0 kHz hsync */ + 84, 1152, 864, 7407, 184, 312, 32, 0, 128, 12, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 74 Hz, 78.85 kHz hsync */ + 74, 1280, 1024, 7407, 256, 32, 34, 3, 144, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1024x768 @ 100Hz, 80.21 kHz hsync */ + 100, 1024, 768, 8658, 192, 32, 21, 3, 192, 10, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 76 Hz, 81.13 kHz hsync */ + 76, 1280, 1024, 7407, 248, 32, 34, 3, 104, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1600x1200 @ 70 Hz, 87.50 kHz hsync */ + 70, 1600, 1200, 5291, 304, 64, 46, 1, 192, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1152x864 @ 100 Hz, 89.62 kHz hsync */ + 100, 1152, 864, 7264, 224, 32, 17, 2, 128, 19, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 85 Hz, 91.15 kHz hsync */ + 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1600x1200 @ 75 Hz, 93.75 kHz hsync */ + 75, 1600, 1200, 4938, 304, 64, 46, 1, 192, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1600x1200 @ 85 Hz, 105.77 kHz hsync */ + 85, 1600, 1200, 4545, 272, 16, 37, 4, 192, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1280x1024 @ 100 Hz, 107.16 kHz hsync */ + 100, 1280, 1024, 5502, 256, 32, 26, 7, 128, 15, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1800x1440 @ 64Hz, 96.15 kHz hsync */ + 64, 1800, 1440, 4347, 304, 96, 46, 1, 192, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1800x1440 @ 70Hz, 104.52 kHz hsync */ + 70, 1800, 1440, 4000, 304, 96, 46, 1, 192, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 512x384 @ 78 Hz, 31.50 kHz hsync */ + 78, 512, 384, 49603, 48, 16, 16, 1, 64, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 512x384 @ 85 Hz, 34.38 kHz hsync */ + 85, 512, 384, 45454, 48, 16, 16, 1, 64, 3, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio */ + 70, 320, 200, 79440, 16, 16, 20, 4, 48, 1, + 0, FB_VMODE_DOUBLE + }, + { + /* 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio */ + 60, 320, 240, 79440, 16, 16, 16, 5, 48, 1, + 0, FB_VMODE_DOUBLE + }, + { + /* 320x240 @ 72 Hz, 36.5 kHz hsync */ + 72, 320, 240, 63492, 16, 16, 16, 4, 48, 2, + 0, FB_VMODE_DOUBLE + }, + { + /* 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio */ + 56, 400, 300, 55555, 64, 16, 10, 1, 32, 1, + 0, FB_VMODE_DOUBLE + }, + { + /* 400x300 @ 60 Hz, 37.8 kHz hsync */ + 60, 400, 300, 50000, 48, 16, 11, 1, 64, 2, + 0, FB_VMODE_DOUBLE + }, + { + /* 400x300 @ 72 Hz, 48.0 kHz hsync */ + 72, 400, 300, 40000, 32, 24, 11, 19, 64, 3, + 0, FB_VMODE_DOUBLE + }, + { + /* 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio */ + 56, 480, 300, 46176, 80, 16, 10, 1, 40, 1, + 0, FB_VMODE_DOUBLE + }, + { + /* 480x300 @ 60 Hz, 37.8 kHz hsync */ + 60, 480, 300, 41858, 56, 16, 11, 1, 80, 2, + 0, FB_VMODE_DOUBLE + }, + { + /* 480x300 @ 63 Hz, 39.6 kHz hsync */ + 63, 480, 300, 40000, 56, 16, 11, 1, 80, 2, + 0, FB_VMODE_DOUBLE + }, + { + /* 480x300 @ 72 Hz, 48.0 kHz hsync */ + 72, 480, 300, 33386, 40, 24, 11, 19, 80, 3, + 0, FB_VMODE_DOUBLE + }, + { + /* 1920x1200 @ 60 Hz, 74.5 Khz hsync */ + 60, 1920, 1200, 5177, 128, 336, 1, 38, 208, 3, + FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, + FB_VMODE_NONINTERLACED + }, + { + /* 1152x768, 60 Hz, PowerBook G4 Titanium I and II */ + 60, 1152, 768, 14047, 158, 26, 29, 3, 136, 6, + FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED + }, + { + /* 1920x1080, 60 Hz, 1080pf */ + 60, 1920, 1080, 6741, 148, 44, 36, 4, 88, 5, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1366x768, 60 Hz, 47.403 kHz hsync, WXGA 16:9 aspect ratio */ + 60, 1366, 768, 13806, 120, 10, 14, 3, 32, 5, + 0, FB_VMODE_NONINTERLACED + }, + { + /* 1280x800, 60 Hz, 47.403 kHz hsync, WXGA 16:10 aspect ratio */ + 60, 1280, 800, 12048, 200, 64, 24, 1, 136, 3, + 0, FB_VMODE_NONINTERLACED + }, }; long total_modedb = sizeof(modedb) / sizeof(*modedb); @@ -325,73 +325,73 @@ long total_modedb = sizeof(modedb) / sizeof(*modedb); const struct fb_videomode vesa_modes[] = { /* 0 640x350-85 VESA */ -{ 85, 640, 350, 31746, 96, 32, 60, 32, 64, 3, FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA}, -/* 1 640x400-85 VESA */ -{ 85, 640, 400, 31746, 96, 32, 41, 01, 64, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 2 720x400-85 VESA */ -{ 85, 721, 400, 28169, 108, 36, 42, 01, 72, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 3 640x480-60 VESA */ -{ 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 4 640x480-72 VESA */ -{ 72, 640, 480, 31746, 128, 24, 29, 9, 40, 2, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 5 640x480-75 VESA */ -{ 75, 640, 480, 31746, 120, 16, 16, 01, 64, 3, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 6 640x480-85 VESA */ -{ 85, 640, 480, 27777, 80, 56, 25, 01, 56, 3, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 7 800x600-56 VESA */ -{ 56, 800, 600, 27777, 128, 24, 22, 01, 72, 2, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 8 800x600-60 VESA */ -{ 60, 800, 600, 25000, 88, 40, 23, 01, 128, 4, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 9 800x600-72 VESA */ -{ 72, 800, 600, 20000, 64, 56, 23, 37, 120, 6, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 10 800x600-75 VESA */ -{ 75, 800, 600, 20202, 160, 16, 21, 01, 80, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 11 800x600-85 VESA */ -{ 85, 800, 600, 17761, 152, 32, 27, 01, 64, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 12 1024x768i-43 VESA */ -{ 53, 1024, 768, 22271, 56, 8, 41, 0, 176, 8, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_INTERLACED, FB_MODE_IS_VESA }, -/* 13 1024x768-60 VESA */ -{ 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 14 1024x768-70 VESA */ -{ 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 15 1024x768-75 VESA */ -{ 75, 1024, 768, 12690, 176, 16, 28, 1, 96, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 16 1024x768-85 VESA */ -{ 85, 1024, 768, 10582, 208, 48, 36, 1, 96, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 17 1152x864-75 VESA */ -{ 75, 1153, 864, 9259, 256, 64, 32, 1, 128, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 18 1280x960-60 VESA */ -{ 60, 1280, 960, 9259, 312, 96, 36, 1, 112, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 19 1280x960-85 VESA */ -{ 85, 1280, 960, 6734, 224, 64, 47, 1, 160, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 20 1280x1024-60 VESA */ -{ 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 21 1280x1024-75 VESA */ -{ 75, 1280, 1024, 7407, 248, 16, 38, 1, 144, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 22 1280x1024-85 VESA */ -{ 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 23 1600x1200-60 VESA */ -{ 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 24 1600x1200-65 VESA */ -{ 65, 1600, 1200, 5698, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 25 1600x1200-70 VESA */ -{ 70, 1600, 1200, 5291, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 26 1600x1200-75 VESA */ -{ 75, 1600, 1200, 4938, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 27 1600x1200-85 VESA */ -{ 85, 1600, 1200, 4357, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 28 1792x1344-60 VESA */ -{ 60, 1792, 1344, 4882, 328, 128, 46, 1, 200, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 29 1792x1344-75 VESA */ -{ 75, 1792, 1344, 3831, 352, 96, 69, 1, 216, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 30 1856x1392-60 VESA */ -{ 60, 1856, 1392, 4580, 352, 96, 43, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 31 1856x1392-75 VESA */ -{ 75, 1856, 1392, 3472, 352, 128, 104, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 32 1920x1440-60 VESA */ -{ 60, 1920, 1440, 4273, 344, 128, 56, 1, 200, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, -/* 33 1920x1440-75 VESA */ -{ 60, 1920, 1440, 3367, 352, 144, 56, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + { 85, 640, 350, 31746, 96, 32, 60, 32, 64, 3, FB_SYNC_HOR_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA}, + /* 1 640x400-85 VESA */ + { 85, 640, 400, 31746, 96, 32, 41, 01, 64, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 2 720x400-85 VESA */ + { 85, 721, 400, 28169, 108, 36, 42, 01, 72, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 3 640x480-60 VESA */ + { 60, 640, 480, 39682, 48, 16, 33, 10, 96, 2, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 4 640x480-72 VESA */ + { 72, 640, 480, 31746, 128, 24, 29, 9, 40, 2, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 5 640x480-75 VESA */ + { 75, 640, 480, 31746, 120, 16, 16, 01, 64, 3, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 6 640x480-85 VESA */ + { 85, 640, 480, 27777, 80, 56, 25, 01, 56, 3, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 7 800x600-56 VESA */ + { 56, 800, 600, 27777, 128, 24, 22, 01, 72, 2, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 8 800x600-60 VESA */ + { 60, 800, 600, 25000, 88, 40, 23, 01, 128, 4, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 9 800x600-72 VESA */ + { 72, 800, 600, 20000, 64, 56, 23, 37, 120, 6, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 10 800x600-75 VESA */ + { 75, 800, 600, 20202, 160, 16, 21, 01, 80, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 11 800x600-85 VESA */ + { 85, 800, 600, 17761, 152, 32, 27, 01, 64, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 12 1024x768i-43 VESA */ + { 53, 1024, 768, 22271, 56, 8, 41, 0, 176, 8, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_INTERLACED, FB_MODE_IS_VESA }, + /* 13 1024x768-60 VESA */ + { 60, 1024, 768, 15384, 160, 24, 29, 3, 136, 6, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 14 1024x768-70 VESA */ + { 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6, 0, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 15 1024x768-75 VESA */ + { 75, 1024, 768, 12690, 176, 16, 28, 1, 96, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 16 1024x768-85 VESA */ + { 85, 1024, 768, 10582, 208, 48, 36, 1, 96, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 17 1152x864-75 VESA */ + { 75, 1153, 864, 9259, 256, 64, 32, 1, 128, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 18 1280x960-60 VESA */ + { 60, 1280, 960, 9259, 312, 96, 36, 1, 112, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 19 1280x960-85 VESA */ + { 85, 1280, 960, 6734, 224, 64, 47, 1, 160, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 20 1280x1024-60 VESA */ + { 60, 1280, 1024, 9259, 248, 48, 38, 1, 112, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 21 1280x1024-75 VESA */ + { 75, 1280, 1024, 7407, 248, 16, 38, 1, 144, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 22 1280x1024-85 VESA */ + { 85, 1280, 1024, 6349, 224, 64, 44, 1, 160, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 23 1600x1200-60 VESA */ + { 60, 1600, 1200, 6172, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 24 1600x1200-65 VESA */ + { 65, 1600, 1200, 5698, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 25 1600x1200-70 VESA */ + { 70, 1600, 1200, 5291, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 26 1600x1200-75 VESA */ + { 75, 1600, 1200, 4938, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 27 1600x1200-85 VESA */ + { 85, 1600, 1200, 4357, 304, 64, 46, 1, 192, 3, FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 28 1792x1344-60 VESA */ + { 60, 1792, 1344, 4882, 328, 128, 46, 1, 200, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 29 1792x1344-75 VESA */ + { 75, 1792, 1344, 3831, 352, 96, 69, 1, 216, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 30 1856x1392-60 VESA */ + { 60, 1856, 1392, 4580, 352, 96, 43, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 31 1856x1392-75 VESA */ + { 75, 1856, 1392, 3472, 352, 128, 104, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 32 1920x1440-60 VESA */ + { 60, 1920, 1440, 4273, 344, 128, 56, 1, 200, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, + /* 33 1920x1440-75 VESA */ + { 60, 1920, 1440, 3367, 352, 144, 56, 1, 224, 3, FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED, FB_MODE_IS_VESA }, }; /** @@ -408,7 +408,7 @@ const struct fb_videomode vesa_modes[] = */ static int32_t fb_try_mode(struct fb_var_screeninfo *var, struct fb_info *info, - const struct fb_videomode *mode, uint32_t bpp) + const struct fb_videomode *mode, uint32_t bpp) { int32_t err = 0; diff --git a/BaS_gcc/video/fbmon.c b/BaS_gcc/video/fbmon.c index 4552bc4..edfc2e7 100644 --- a/BaS_gcc/video/fbmon.c +++ b/BaS_gcc/video/fbmon.c @@ -77,12 +77,15 @@ static void copy_string(unsigned char *c, unsigned char *s) for (i = 0; (i < 13 && *c != 0x0A); i++) *(s++) = *(c++); *s = 0; - while (i-- && (*--s == 0x20)) *s = 0; + + while (i-- && (*--s == 0x20)) + *s = 0; } static int32_t check_edid(unsigned char *edid) { - unsigned char *block = edid + ID_MANUFACTURER_NAME, manufacturer[4]; + unsigned char *block = edid + ID_MANUFACTURER_NAME; + unsigned char manufacturer[4]; unsigned char *b; unsigned long model; int32_t i, fix = 0, ret = 0; @@ -92,6 +95,7 @@ static int32_t check_edid(unsigned char *edid) manufacturer[2] = (block[1] & 0x1f) + '@'; manufacturer[3] = 0; model = block[2] + (block[3] << 8); + for (i = 0; i < sizeof(brokendb)/sizeof(*brokendb); i++) { if (manufacturer[0] == brokendb[i].manufacturer[0] && @@ -104,6 +108,7 @@ static int32_t check_edid(unsigned char *edid) break; } } + switch (fix) { case FBMON_FIX_HEADER: @@ -122,6 +127,7 @@ static int32_t check_edid(unsigned char *edid) ret = fix; break; } + return ret; } @@ -146,36 +152,46 @@ static void fix_edid(unsigned char *edid, int32_t fix) static int32_t edid_checksum(unsigned char *edid) { unsigned char i, csum = 0, all_null = 0; - int32_t err = 0, fix = check_edid(edid); + int err = 0; + int fix = check_edid(edid); if (fix) fix_edid(edid, fix); + for (i = 0; i < EDID_LENGTH; i++) { csum += edid[i]; all_null |= edid[i]; } + if ((csum == 0x00) && all_null) /* checksum passed, everything's good */ err = 1; + if (!err) dbg("edid bad checksum\r\n"); + return err; } static int32_t edid_check_header(unsigned char *edid) { - int32_t i, err = 1, fix = check_edid(edid); + int i; + int err = 1; + int fix = check_edid(edid); if (fix) fix_edid(edid, fix); + for (i = 0; i < 8; i++) { if (edid[i] != edid_v1_header[i]) err = 0; } + if (!err) dbg("edid bad header\r\n"); + return err; } @@ -199,12 +215,16 @@ static void parse_vendor_block(unsigned char *block, struct fb_monspecs *specs) static void get_dpms_capabilities(unsigned char flags, struct fb_monspecs *specs) { specs->dpms = 0; + if (flags & DPMS_ACTIVE_OFF) specs->dpms |= FB_DPMS_ACTIVE_OFF; + if (flags & DPMS_SUSPEND) specs->dpms |= FB_DPMS_SUSPEND; + if (flags & DPMS_STANDBY) specs->dpms |= FB_DPMS_STANDBY; + dbg(" DPMS: Active %s\r\n", (flags & DPMS_ACTIVE_OFF) ? "yes" : "no"); dbg(" Suspend: %s\r\n", (flags & DPMS_SUSPEND) ? "yes" : "no"); dbg(" Standby %s\r\n", (flags & DPMS_STANDBY) ? "yes\r\n" : "no\r\n"); @@ -212,7 +232,7 @@ static void get_dpms_capabilities(unsigned char flags, struct fb_monspecs *specs static void get_chroma(unsigned char *block, struct fb_monspecs *specs) { - int32_t tmp; + int tmp; /* Chromaticity data */ tmp = ((block[5] & (3 << 6)) >> 6) | (block[0x7] << 2); @@ -264,7 +284,7 @@ static void get_chroma(unsigned char *block, struct fb_monspecs *specs) dbg(" WhiteY: %d\r\n", specs->chroma.whitey / 10); } -static int32_t edid_is_serial_block(unsigned char *block) +static int edid_is_serial_block(unsigned char *block) { if ((block[0] == 0x00) && (block[1] == 0x00) && (block[2] == 0x00) && (block[3] == 0xff) && (block[4] == 0x00)) @@ -273,7 +293,7 @@ static int32_t edid_is_serial_block(unsigned char *block) return 0; } -static int32_t edid_is_ascii_block(unsigned char *block) +static int edid_is_ascii_block(unsigned char *block) { if ((block[0] == 0x00) && (block[1] == 0x00) && (block[2] == 0x00) && (block[3] == 0xfe) && (block[4] == 0x00)) @@ -282,7 +302,7 @@ static int32_t edid_is_ascii_block(unsigned char *block) return 0; } -static int32_t edid_is_limits_block(unsigned char *block) +static int edid_is_limits_block(unsigned char *block) { if ((block[0] == 0x00) && (block[1] == 0x00) && (block[2] == 0x00) && (block[3] == 0xfd) && (block[4] == 0x00)) @@ -291,7 +311,7 @@ static int32_t edid_is_limits_block(unsigned char *block) return 0; } -static int32_t edid_is_monitor_block(unsigned char *block) +static int edid_is_monitor_block(unsigned char *block) { if ((block[0] == 0x00) && (block[1] == 0x00) && (block[2] == 0x00) && (block[3] == 0xfc) && (block[4] == 0x00)) @@ -304,6 +324,7 @@ static void calc_mode_timings(int32_t xres, int32_t yres, int32_t refresh, struc { struct fb_var_screeninfo var; struct fb_info info; + var.xres = xres; var.yres = yres; fb_get_mode(FB_VSYNCTIMINGS | FB_IGNOREMON, refresh, &var, &info); @@ -321,97 +342,117 @@ static void calc_mode_timings(int32_t xres, int32_t yres, int32_t refresh, struc mode->sync = 0; } -static int32_t get_est_timing(unsigned char *block, struct fb_videomode *mode) +static int get_est_timing(unsigned char *block, struct fb_videomode *mode) { - int32_t num = 0; + int num = 0; unsigned char c; + c = block[0]; + if (c & 0x80) { calc_mode_timings(720, 400, 70, &mode[num]); mode[num++].flag = FB_MODE_IS_CALCULATED; dbg(" 720x400@70Hz\r\n"); } + if (c & 0x40) { calc_mode_timings(720, 400, 88, &mode[num]); mode[num++].flag = FB_MODE_IS_CALCULATED; dbg(" 720x400@88Hz\r\n"); } - if (c&0x20) + + if (c & 0x20) { mode[num++] = vesa_modes[3]; dbg(" 640x480@60Hz\r\n"); } + if (c & 0x10) { calc_mode_timings(640, 480, 67, &mode[num]); mode[num++].flag = FB_MODE_IS_CALCULATED; dbg(" 640x480@67Hz\r\n"); } + if (c & 0x08) { mode[num++] = vesa_modes[4]; dbg(" 640x480@72Hz\r\n"); } + if (c & 0x04) { mode[num++] = vesa_modes[5]; dbg(" 640x480@75Hz\r\n"); } + if (c & 0x02) { mode[num++] = vesa_modes[7]; dbg(" 800x600@56Hz\r\n"); } + if (c & 0x01) { mode[num++] = vesa_modes[8]; dbg(" 800x600@60Hz\r\n"); } + c = block[1]; + if (c & 0x80) { mode[num++] = vesa_modes[9]; dbg(" 800x600@72Hz\r\n"); } + if (c & 0x40) { mode[num++] = vesa_modes[10]; dbg(" 800x600@75Hz\r\n"); } + if (c & 0x20) { calc_mode_timings(832, 624, 75, &mode[num]); mode[num++].flag = FB_MODE_IS_CALCULATED; dbg(" 832x624@75Hz\r\n"); } + if (c & 0x10) { mode[num++] = vesa_modes[12]; dbg(" 1024x768@87Hz Interlaced\r\n"); } + if (c & 0x08) { mode[num++] = vesa_modes[13]; dbg(" 1024x768@60Hz\r\n"); } + if (c & 0x04) { mode[num++] = vesa_modes[14]; dbg(" 1024x768@70Hz\r\n"); } + if (c & 0x02) { mode[num++] = vesa_modes[15]; dbg(" 1024x768@75Hz\r\n"); } + if (c & 0x01) { mode[num++] = vesa_modes[21]; dbg(" 1280x1024@75Hz\r\n"); } + c = block[2]; + if (c & 0x80) { mode[num++] = vesa_modes[17]; @@ -422,13 +463,21 @@ static int32_t get_est_timing(unsigned char *block, struct fb_videomode *mode) return num; } -static int32_t get_std_timing(unsigned char *block, struct fb_videomode *mode) +static int get_std_timing(unsigned char *block, struct fb_videomode *mode) { - int32_t xres, yres = 0, refresh, ratio, i; + int xres; + int yres = 0; + int refresh; + int ratio; + int i; + xres = (block[0] + 31) * 8; - if(xres <= 256) + + if (xres <= 256) return 0; + ratio = (block[1] & 0xc0) >> 6; + switch(ratio) { case 0: @@ -461,14 +510,18 @@ static int32_t get_std_timing(unsigned char *block, struct fb_videomode *mode) } } calc_mode_timings(xres, yres, refresh, mode); + return 1; } -static int32_t get_dst_timing(unsigned char *block, struct fb_videomode *mode) +static int get_dst_timing(unsigned char *block, struct fb_videomode *mode) { - int32_t j, num = 0; + int j; + int num = 0; + for (j = 0; j < 6; j++, block+= STD_TIMING_DESCRIPTION_SIZE) num += get_std_timing(block, &mode[num]); + return num; } @@ -485,11 +538,14 @@ static void get_detailed_timing(unsigned char *block, struct fb_videomode *mode) mode->lower_margin = V_SYNC_OFFSET; mode->hsync_len = H_SYNC_WIDTH; mode->vsync_len = V_SYNC_WIDTH; - if(HSYNC_POSITIVE) + + if (HSYNC_POSITIVE) mode->sync |= FB_SYNC_HOR_HIGH_ACT; - if(VSYNC_POSITIVE) + + if (VSYNC_POSITIVE) mode->sync |= FB_SYNC_VERT_HIGH_ACT; - mode->refresh = PIXEL_CLOCK/((H_ACTIVE + H_BLANKING) * (V_ACTIVE + V_BLANKING)); + + mode->refresh = PIXEL_CLOCK / ((H_ACTIVE + H_BLANKING) * (V_ACTIVE + V_BLANKING)); mode->vmode = 0; mode->flag = FB_MODE_IS_DETAILED; dbg("%d MHz 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x 0x%04x\r\n", @@ -511,11 +567,13 @@ static void get_detailed_timing(unsigned char *block, struct fb_videomode *mode) static struct fb_videomode tab_db[MAX_DB_ALLOC]; static struct fb_videomode *db_used[MAX_DB_ALLOC]; -static struct fb_videomode *alloc_db(int32_t num) +static struct fb_videomode *alloc_db(int num) { - int32_t i = 0; + int i = 0; + if (!num) return NULL; + while (i < MAX_DB_ALLOC) { if ((db_used[i] == NULL) && ((i + num) <= MAX_DB_ALLOC)) @@ -524,7 +582,7 @@ static struct fb_videomode *alloc_db(int32_t num) for (j = 0; j < num; j++) { - if (db_used[i+j] != NULL) + if (db_used[i + j] != NULL) break; /* already used */ } if (j >= num) @@ -576,18 +634,22 @@ void fb_destroy_modedb(struct fb_videomode *modedb) * This function builds a mode database using the contents of the EDID * data */ -static struct fb_videomode *fb_create_modedb(unsigned char *edid, int32_t *dbsize) +static struct fb_videomode *fb_create_modedb(unsigned char *edid, int *dbsize) { - struct fb_videomode *mode, *m; + struct fb_videomode *mode; + struct fb_videomode *m; unsigned char *block; - int32_t num = 0, i; + int num = 0; + int i; // mode = Funcs_malloc(50 * sizeof(struct fb_videomode), 3); mode = alloc_db(50); + if (mode == NULL) return NULL; - memset((char *)mode, 0, 50 * sizeof(struct fb_videomode)); + memset(mode, 0, 50 * sizeof(struct fb_videomode)); + if (edid == NULL || !edid_checksum(edid) || !edid_check_header(edid)) { fb_destroy_modedb(mode); @@ -606,7 +668,7 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int32_t *dbsiz block = edid + DETAILED_TIMING_DESCRIPTIONS_START; for (i = 0; i < 4; i++, block+= DETAILED_TIMING_DESCRIPTION_SIZE) { - int32_t first = 1; + int first = 1; if (block[0] == 0x00 && block[1] == 0x00) { @@ -624,6 +686,7 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int32_t *dbsiz num++; } } + /* Yikes, EDID data is totally useless */ if (!num) { @@ -642,9 +705,10 @@ static struct fb_videomode *fb_create_modedb(unsigned char *edid, int32_t *dbsiz return m; } -static int32_t fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs) +static int fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *specs) { - int32_t i, retval = 1; + int i; + int retval = 1; unsigned char *block; block = edid + DETAILED_TIMING_DESCRIPTIONS_START; @@ -664,11 +728,16 @@ static int32_t fb_get_monitor_limits(unsigned char *edid, struct fb_monspecs *sp break; } } + /* estimate monitor limits based on modes supported */ if (retval) { struct fb_videomode *modes; - int32_t num_modes, i, hz, hscan, pixclock; + int num_modes; + int i; + int hz; + int hscan; + int pixclock; modes = fb_create_modedb(edid, &num_modes); if (!modes) @@ -748,12 +817,15 @@ static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs) break; } } + // dbg("Sync: "); c = block[0] & 0x10; + if (c) { dbg(" Configurable signal level\r\n"); } + c = block[0] & 0x0f; specs->signal = 0; @@ -798,22 +870,22 @@ static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs) switch ((block[4] & 0x18) >> 3) { case 0: - //DPRINT(" Monochrome/Grayscale\r\n"); + dbg(" Monochrome/Grayscale\r\n"); specs->input |= FB_DISP_MONO; break; case 1: - //DPRINT(" RGB Color Display\r\n"); + dbg(" RGB Color Display\r\n"); specs->input |= FB_DISP_RGB; break; case 2: - //DPRINT(" Non-RGB Multicolor Display\r\n"); + dbg(" Non-RGB Multicolor Display\r\n"); specs->input |= FB_DISP_MULTI; break; default: - //DPRINT(" Unknown\r\n"); + dbg(" Unknown\r\n"); specs->input |= FB_DISP_UNKNOWN; break; } @@ -837,7 +909,7 @@ static void get_monspecs(unsigned char *edid, struct fb_monspecs *specs) } } -static int32_t edid_is_timing_block(unsigned char *block) +static int edid_is_timing_block(unsigned char *block) { if ((block[0] != 0x00) || (block[1] != 0x00) || (block[2] != 0x00) || (block[4] != 0x00)) @@ -846,7 +918,7 @@ static int32_t edid_is_timing_block(unsigned char *block) return 0; } -int32_t fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) +int fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) { int32_t i; unsigned char *block; @@ -889,17 +961,21 @@ int32_t fb_parse_edid(unsigned char *edid, struct fb_var_screeninfo *var) void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) { unsigned char *block; - int32_t i; + int i; if (edid == NULL) return; + if (!(edid_checksum(edid))) return; + if (!(edid_check_header(edid))) return; + if (specs->modedb != NULL) fb_destroy_modedb(specs->modedb); - memset((char *)specs, 0, sizeof(struct fb_monspecs)); + + memset(specs, 0, sizeof(struct fb_monspecs)); specs->version = edid[EDID_STRUCT_VERSION]; specs->revision = edid[EDID_STRUCT_REVISION]; dbg("========================================\r\n"); @@ -914,9 +990,7 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) if (edid_is_serial_block(block)) { copy_string(block, specs->serial_no); - //DPRINT(" Serial Number: "); - //DPRINT((void *)specs->serial_no); - //DPRINT("\r\n"); + dbg(" Serial Number: %d\r\n", specs->serial_no); } else if (edid_is_ascii_block(block)) { @@ -935,7 +1009,7 @@ void fb_edid_to_monspecs(unsigned char *edid, struct fb_monspecs *specs) } //DPRINT(" Display Characteristics:\r\n"); get_monspecs(edid, specs); - specs->modedb = fb_create_modedb(edid, (int32_t *)&specs->modedb_len); + specs->modedb = fb_create_modedb(edid, (int *) &specs->modedb_len); dbg("========================================\r\n"); } @@ -1208,7 +1282,7 @@ int32_t fb_get_mode(int32_t flags, uint32_t val, struct fb_var_screeninfo *var, dclkmin = info->monspecs.dclkmin; dclkmax = info->monspecs.dclkmax; } - memset((char *)&timings, 0, sizeof(struct __fb_timings)); + memset(&timings, 0, sizeof(struct __fb_timings)); timings.hactive = var->xres; timings.vactive = var->yres;