⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init_platform.c

📁 MIPS YAMON, a famous monitor inc. source, make file and PDF manuals.
💻 C
📖 第 1 页 / 共 2 页
字号:
            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASEHI;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_COM2_ADR >> 8;	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASELO;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_COM2_ADR & 0xFF;            /* Select IRQ */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_IRQ;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_INTLINE_TTY1;	    /* Mode register (Enable High Speed) */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_MODE;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_MODE_HIGHSPEED_BIT;            /* Activate device */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_ACTIVATE;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_ACTIVATE_ENABLE_BIT;            /**** Serial port com 1 (TTY0) ****/            /* Select device */	   	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_DEVNUM;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_DEVNUM_COM1;            /* Set base address */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASEHI;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_COM1_ADR >> 8;	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASELO;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_COM1_ADR & 0xFF;            /* Select IRQ */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_IRQ;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_INTLINE_TTY0;	    /* Mode register (Enable High Speed) */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_MODE;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_MODE_HIGHSPEED_BIT;            /* Activate device */	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_ACTIVATE;	    MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_ACTIVATE_ENABLE_BIT;            /**** Parallel port (1284) ****/            /* Select device */               MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_DEVNUM;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_DEVNUM_PARALLEL;            /* Set base address */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASEHI;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_1284_ADR >> 8;            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_BASELO;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_SMSC_1284_ADR & 0xFF;            /* Select IRQ */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_IRQ;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_INTLINE_1284;            /* Activate device */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_ACTIVATE;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_ACTIVATE_ENABLE_BIT;            /**** Floppy Disk ****/            /* Select device */               MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_DEVNUM;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_DEVNUM_FDD;            /* Activate device */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_ACTIVATE;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_ACTIVATE_ENABLE_BIT;	    /**** Keyboard, Mouse ****/            /* Select device */               MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_DEVNUM;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_DEVNUM_KYBD;            /* Select IRQ for keyboard */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_IRQ;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_INTLINE_KYBD;            /* Select IRQ for mouse */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_IRQ2;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = MALTA_INTLINE_MOUSE;            /* Activate device */            MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_ACTIVATE;            MALTA_SUPER_IO8( SMSC_DATA_OFS )   = SMSC_CONFIG_ACTIVATE_ENABLE_BIT;            /**** Run mode ****/	    MALTA_SUPER_IO8( SMSC_CONFIG_OFS ) = SMSC_CONFIG_KEY_EXIT;            /* Initialise PIIX4 counter 0 (binary, 16 bit, mode 0) */	    MALTA_PIIX4_IO8( PIIX4_TCW_OFS ) = 	        (PIIX4_TCW_CS_0   << PIIX4_TCW_CS_SHF)    |	        (PIIX4_TCW_RW_16  << PIIX4_TCW_RW_SHF)    |	        (PIIX4_TCW_MODE_0 << PIIX4_TCW_MODE_SHF);            /* Initial count (0) */	    MALTA_PIIX4_IO8( PIIX4_TMRCNT0_OFS ) = 0;	    MALTA_PIIX4_IO8( PIIX4_TMRCNT0_OFS ) = 0;            /*  Enable IO access to Power Management device              *  8 bit register (PCI always little endian) 	     */            pci_config_write8( PCI_BUS_LOCAL, 			       MALTA_DEVNUM_PIIX4,			       PIIX4_PCI_FUNCTION_POWER,			       PIIX4_PCI_PMREGMISC,			       PIIX4_PMREGMISC_ENABLE_BIT );            /* Disable I2C controller in FPGA */            REG32( KSEG1( MALTA_I2CSEL ) ) &= ~MALTA_I2CSEL_FPGA_BIT;            /* Enable SMBus Host Interface and configure it for IRQ9 */            pci_config_write8( PCI_BUS_LOCAL,			       MALTA_DEVNUM_PIIX4,			       PIIX4_PCI_FUNCTION_POWER,			       PIIX4_PCI_SMBHCFG,			         (PIIX4_SMBHCFG_IS_IRQ9 << PIIX4_SMBHCFG_IS_SHF) |			         PIIX4_SMBHCFG_EN_BIT );	    /* IDE configuration, IDE Decode Enable (Primary IDE) */	    pci_config_write16( PCI_BUS_LOCAL,				MALTA_DEVNUM_PIIX4,				PIIX4_PCI_FUNCTION_IDE,				PIIX4_PCI_IDETIM_PRIM,				PIIX4_IDETIM_IDE_BIT );	    /* IDE configuration, IDE Decode Enable (Secondary IDE) */	    pci_config_write16( PCI_BUS_LOCAL,				MALTA_DEVNUM_PIIX4,				PIIX4_PCI_FUNCTION_IDE,				PIIX4_PCI_IDETIM_SEC,				PIIX4_IDETIM_IDE_BIT );				            break;          case PRODUCT_ATLASA_ID :	    /* Setup North Bridge mapping global variable */	    sys_nb_base = KSEG1(ATLAS_CORECTRL_BASE);            /* Perform early core specific initialisation */            arch_core_init( TRUE, ATLAS_INTLINE_COREHI, FALSE );	    break;	  default :	   	    break;        }    }    else    {        /* !early */        switch( sys_platform )	{          case PRODUCT_ATLASA_ID :	    /* Perform core specific initialisation */            arch_core_init( FALSE, ATLAS_INTLINE_COREHI, FALSE );	    break;          case PRODUCT_MALTA_ID :	    /* Perform core specific initialisation */            arch_core_init( FALSE, MALTA_CPUINT_COREHI, TRUE );	    /**** Setup SMI (System Management Interrupt) ****/            SYSCON_read( SYSCON_BOARD_PIIX4_POWER_BASE_ID,		         (void *)&base,			 sizeof(UINT32) );	    base = KSEG1( (UINT32)base );	    /*  Set LID, Thermal polarity to active low.	     *  Set Global Standby Timer Initial Count to 0x7F.	     */	    REG32( base + PIIX4_GLBCTL_OFS ) |= 	        ( (0x7F << PIIX4_GLBCTL_GSTBY_CNT_SHF) |		  PIIX4_GLBCTL_LID_POL_BIT	       |		  PIIX4_GLBCTL_THRM_POL_BIT );	    /* Disable all SMI sources in Global Enable Register */	    R16( base + PIIX4_GLBEN_OFS ) = 0;	    /*  Disable all SMI sources in General Purpose Enable	     *  Register, except GPI (PCI Power Management Event).	     *  This means that the board way be awakened by	     *  e.g. Ethernet Magic(TM) Packets.	     */	    R16( base + PIIX4_GPEN_OFS ) = PIIX4_GPEN_GPIEN_BIT;	    	    /* Clear General Purpose Status Register */	    R16( base + PIIX4_GPSTS_OFS ) = 0xFFFF;	    	    /* Clear Power Management Status Register */	    R16( base + PIIX4_PMSTS_OFS ) = 0xFFFF;	    /* Clear Global Status Register */	    R16( base + PIIX4_GLBSTS_OFS ) = 0xFFFF;            /* Register ISR for SMI interrupts */	    EXCEP_register_cpu_isr( MALTA_CPUINT_SMI,				    smi_isr,				    NULL,				    NULL );	    /* Enable SMI (should never be generated) */	    REG32( base + PIIX4_GLBCTL_OFS ) |= 	        ( PIIX4_GLBCTL_SMI_EN_BIT | 		  PIIX4_GLBCTL_EOS_BIT );	    break;	  default :	    break;        }    }      }/************************************************************************ *  Implementation : Static functions ************************************************************************/static voidsmi_isr(     void *data ){    UINT16 status, gpsts, pmsts, glben, gpen;    status = R16( base + PIIX4_GLBSTS_OFS );    gpsts  = R16( base + PIIX4_GPSTS_OFS );    pmsts  = R16( base + PIIX4_PMSTS_OFS );    glben  = R16( base + PIIX4_GLBEN_OFS );    gpen   = R16( base + PIIX4_GPEN_OFS );    printf( "\nSMI interrupt."	    "\nStatus = 0x%04x"	    "\nGPSTS  = 0x%04x"	    "\nPMSTS  = 0x%04x" 	    "\nGLBEN  = 0x%04x"	    "\nGPEN   = 0x%04x"	    "\n",	      status, gpsts, pmsts, glben, gpen );    while(1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -