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

📄 bspatamx31.cpp

📁 Freescale ARM11系列CPU MX31的WINCE 5.0下的BSP
💻 CPP
📖 第 1 页 / 共 2 页
字号:
#ifdef ATA_USBH2
     DEBUGMSG(1, (TEXT(" BSPATAIOMUXConfig ATA with Host2!\r\n")));

     // ATA IOMUX settings
     DDKIomuxSetGpr(0x040007f8, 0x00000488);

     //Clear ATA_EN and ATA_SEL in CPLD regs
     OUTREG16(&g_pPBC->BCTRL2_CLEAR, (1 << PBC_BCTRL2_ATA_EN_LSH));
     OUTREG16(&g_pPBC->BCTRL2_CLEAR, (1 << PBC_BCTRL2_ATA_SEL_LSH));

     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_RESET_B, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DMACK, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DIOW, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DIOR, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_CS1, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_CS0, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);

     //H2 and ATA work together
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D6, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D6, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D7, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D7, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D8, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D8, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D9, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D9, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D10, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D10, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D11, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D11, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D12, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D12, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D13, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D13, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D14, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D14, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D15, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D15, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_MCLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_MCLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_VSYNC, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_VSYNC, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_HSYNC, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_HSYNC, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_PIXCLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_PIXCLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_I2C_CLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_I2C_CLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_I2C_DAT, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_I2C_DAT, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
#endif //#ifdef ATA_USBH2

#ifdef ATA_USBH1
     DEBUGMSG(1, (TEXT(" BSPATAIOMUXConfig ATA with Host1!\r\n")));

     // ATA IOMUX settings
     DDKIomuxSetGpr(0x040007f8, 0x00000098);

     //Clear ATA_EN and ATA_SEL in CPLD regs
     OUTREG16(&g_pPBC->BCTRL2_CLEAR, (1 << PBC_BCTRL2_ATA_EN_LSH));
     OUTREG16(&g_pPBC->BCTRL2_CLEAR, (1 << PBC_BCTRL2_ATA_SEL_LSH));
     //OUTREG16(&g_pPBC->BCTRL3_SET, 0x04);

     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_RESET_B, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DMACK, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DIOW, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_DIOR, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_CS1, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);
     DDKIomuxSetPinMux(DDK_IOMUX_PIN_ATA_CS0, DDK_IOMUX_OUT_FUNC, DDK_IOMUX_IN_FUNC);

     //H1 and ATA work together
	 DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D6, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D6, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D7, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D7, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D8, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D8, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D9, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D9, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D10, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D10, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D11, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D11, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D12, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D12, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D13, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D13, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D14, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D14, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_D15, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_D15, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_MCLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_MCLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_VSYNC, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_VSYNC, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_HSYNC, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_HSYNC, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_CSI_PIXCLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI_PIXCLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_I2C_CLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_I2C_CLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_I2C_DAT, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_I2C_DAT, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_CLK, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_CLK, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_DIR, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_DIR, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_STP, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_STP, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_NXT, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_NXT, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
	 DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_DATA0, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_DATA0, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
     DDKIomuxGetPadConfig(DDK_IOMUX_PAD_USBH2_DATA1, &slew, &drive, &mode, &trig, &pull);
     DDKIomuxSetPadConfig(DDK_IOMUX_PAD_USBH2_DATA1, DDK_IOMUX_PAD_SLEW_FAST,DDK_IOMUX_PAD_DRIVE_MAX, mode, trig, pull);
#endif //#ifdef ATA_USBH1

    bRet = TRUE;

exit:
    return bRet;
}

//------------------------------------------------------------------------------
//
//     Function: BSPATAEnableClock
//
//            This function enable/disable ATA clock
//
//     Parameters:
//            bEnable
//            [in]    TRUE if ATA Clock is to be enabled. FALSE if ATA Clock is
//                  to be disabled.
//
//     Returns:
//            TRUE if successfully performed the required action.
//
//------------------------------------------------------------------------------
BOOL BSPATAEnableClock(BOOL bEnable)
{
    if (bEnable)
        return DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_ATA, 
            DDK_CLOCK_GATE_MODE_ENABLED_ALL);
    else
        return DDKClockSetGatingMode(DDK_CLOCK_GATE_INDEX_ATA, 
            DDK_CLOCK_GATE_MODE_DISABLED);
}

//------------------------------------------------------------------------------
//
//     Function: BSPATASDMAchannelprio
//
//            This function query the ATA module SDMA channel priority
//
//     Parameters:
//            void
//     Returns:
//            return ATA SDMA channel priority.
//
//------------------------------------------------------------------------------

UINT8 BSPATASDMAchannelprio(void)
{
    return BSP_SDMA_CHNPRI_ATA;
}
//EOF

⌨️ 快捷键说明

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