#include "system.h" #include "basic_io.h" #include "LCD.h" #include "Test.h" #include "Open_I2C.h" #include "sys/alt_irq.h" #include "VGA.h" #include "isp1362.h" #include "isa290.h" #include "reg.h" #include "buf_man.h" #include "port.h" #include "usb.h" #include "ptd.h" #include "cheeyu.h" #include "regcheck.h" #include "mouse.h" #include #include #include #include #include #include "mouse.c" #include "regcheck.c" #include "cheeyu.c" #include "ptd.c" #include "usb.c" #include "buf_man.c" #include "reg.c" #include "port.c" #define version 1.18 // 1.18 Release Version #define TRUE 1 #define FALSE 0 unsigned int temp; unsigned int hc_data; unsigned int hc_com; unsigned int dc_data; unsigned int dc_com; unsigned int g_ISA_base_address; unsigned int g_1161_command_address; unsigned int g_1161_data_address; unsigned char g_host_IRQ_num; unsigned char g_is_PCI; #define PIC1_base 0x20 // Master Interrupt Controller #define PIC1_mask 0x21 #define PIC2_base 0xA0 // Slave Interrupt Controller #define PIC2_mask 0xA1 #define EOI 0x20 // Non-specific End Of Interrupt void open_interrupt(void); void close_interrupt(void); void end_interrupt(void); void interrupt_intserv(void); int get_int_num( int irq_num ); void get_PIC_masks( int *m_lower , int *m_higher, int irq_num ); int x=0; int global_upint=0; long global_intstatus=0; int int_q=0; void interrupt_intserv(void) { // disable(); w16(HcUpIntEnable,0); w16(HcUpInt,0xffff); if(int_q==0) { global_upint=r16(HcUpInt); global_intstatus=r32(HcIntStatus); int_q++; } //w16(HcUpInt, 0xFFFF); //w32(HcIntStatus, 0xFFFFFFFF); //w16(HcUpInt, 0xFFFF); //w32(HcIntStatus, 0xFFFFFFFF); IOWR(LED_GREEN_BASE,0,int_q); IOWR(LED_GREEN_BASE,0,int_q++); w16(HcUpIntEnable,0xffff); w16(HcHWCfg , 0x002d ); } int get_int_num( int irq_num ) { #define LowerINTOffset 0x08 #define HigherINTOffset 0x68 return ( ( irq_num < 8 ) ? irq_num + LowerINTOffset : irq_num + HigherINTOffset ); } void get_PIC_masks( int *m_lower , int *m_higher, int irq_num ) { if ( irq_num < 8 ) { *m_lower = 0x01 << irq_num; *m_higher = 0x00; } else { *m_lower = 0x04; // for cascaded IRQ(IRQ2) *m_higher = 0x01 << (irq_num - 8); } } void open_interrupt(void) { unsigned int temp; int mask1, mask2; int int_num, irq_num; int PIC_mask1, PIC_mask2; disable(); // Disable all ints // outportb(PIC2_base,EOI); // Reset PIC2 // outportb(PIC1_base,EOI); // Reset PIC1 irq_num = g_host_IRQ_num; int_num = get_int_num( irq_num ); get_PIC_masks( &PIC_mask1, &PIC_mask2, irq_num ); // oldfunc=getvect(int_num); // Save old interrupt vector // setvect(int_num, intserv); // intserv is new ISR // mask1=inportb(PIC1_mask); // outportb(PIC1_mask, mask1&~PIC_mask1); // Clear bit 2(IRQ2) - Enable Master IRQ2 // mask2= inportb(PIC2_mask); // outportb(PIC2_mask, mask2&~PIC_mask2); // Clear bit 2(IRQ10) (Enable IRQ10) end_interrupt(); enable(); } void close_interrupt() { int mask, irq_num, int_num; int PIC_mask1, PIC_mask2; disable(); irq_num = g_host_IRQ_num; int_num = get_int_num( irq_num ); get_PIC_masks( &PIC_mask1, &PIC_mask2, irq_num ); // setvect(int_num, oldfunc); // Set back to old vector address //outportb(0x21, inportb( 0x21 ) | PIC_mask1 ); //outportb(0xA1, inportb( 0xA1 ) | PIC_mask2 ); enable(); } void end_interrupt(void) { //outportb(PIC2_base,EOI); // Send EOI to PIC2 //outportb(PIC1_base,EOI); // Send EOI to PIC1 } void decode_dev(unsigned int *reply,char mode,char startx) { int starty; starty=5; if(mode==1) { printf("DescriptorType :0x%8X \n" ,(reply[0]&0xFF00)>>8); printf("DescriptorSize : %8d \n" ,reply[0]&0x00FF); printf("USB DeviceType : %2X.%2X\n",(reply[1]&0xFF00)>>8,reply[1]&0x00FF); printf("Class :0x%8X\n " ,reply[2]&0x00FF); printf("SubClass :0x%8X\n " ,(reply[2]&0xFF00)>>8); printf("bDeviceProtocol:0x%8X\n " ,reply[3]&0x00FF); printf("bMaxPacSize 0 :0x%8X\n " ,(reply[3]&0xFF00)>>8); printf("VendorID :0x%8X\n " ,reply[4]); printf("ProductID :0x%8X\n " ,reply[5]); printf("BCD Device :0x%8X\n " ,reply[6]); printf("iManufacturer :0x%8X\n " ,(reply[7]&0x00FF) ); printf("iProduct :0x%8X\n " ,(reply[7]&0xFF00)>>8); printf("SerialNumber :0x%8X\n " ,(reply[8]&0x00FF)); printf("No of Config :0x%8X\n " ,(reply[8]&0xFF00)>>8); } } void main(void) { VGA_Ctrl_Reg vga_ctrl_set; vga_ctrl_set.VGA_Ctrl_Flags.RED_ON = 1; vga_ctrl_set.VGA_Ctrl_Flags.GREEN_ON = 1; vga_ctrl_set.VGA_Ctrl_Flags.BLUE_ON = 1; vga_ctrl_set.VGA_Ctrl_Flags.CURSOR_ON = 1; Vga_Write_Ctrl(VGA_0_BASE, vga_ctrl_set.Value); Set_Pixel_On_Color(1023,1023,1023); Set_Pixel_Off_Color(0,0,512); Set_Cursor_Color(0,1023,0); w16(HcReset,0x00F6);//reset reset_usb();//config mouse(); }