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

📄 csl_atahwcontrol.c

📁 TI达芬奇dm644x各硬件模块测试代码
💻 C
字号:
/*  ============================================================================ *   Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005 * *   Use of this software is controlled by the terms and conditions found in the *   license agreement under which this software has been supplied. *   =========================================================================== *//** @file csl_ataHwControl.c * *  @brief    File for functional layer of CSL API @a CSL_ataHwControl() * *  Description *    - The @a CSL_ataHwControl() function definition & it's associated *      functions * *  Path: \\(CSLPATH)\\ipmodules\\ata\\src * *  Modification 1 *    - modified on: 2004/03/08 *    - reason: created the sources * *  Date 2004/03/08 *  Author RG Kiran *//* ============================================================================= *  Revision History *  =============== *  07-Nov-2004 kpn  Added code in accordance with new specification *  08-Oct-2004 kpn  Added code to check for invalid instance number *  24-Sep-2004 kpn  Updated according to CSL Upgradation guidelines *  ============================================================================ */#include <csl_ata.h>#include <csl_ataAux.h>/** ============================================================================ *   @n@b CSL_ataHwControl * *   @b Description *   @n Takes a command of ATA with an optional argument & implements it. * *   @b Arguments *   @verbatim            hAta            Handle to the ATA instance            cmd             The command to this API indicates the action to be                            taken on ATA.            arg             An optional argument.     @endverbatim * *   <b> Return Value </b>  CSL_Status *   @li                    CSL_SOK             - Status info return successful. *   @li                    CSL_ESYS_BADHANDLE  - Invalid handle *   @li                    CSL_ESYS_INVCMD     - Invalid command *   @li                    CSL_ESYS_FAIL       - Invalid instance number * *   <b> Pre Condition </b> *   @n  None * *   <b> Post Condition </b> *   @n  None * *   @b Modifies *   @n The hardware registers of ATA. * *   @b Example *   @verbatim        CSL_AtaHandle         hAta;        CSL_AtaHwControlCmd   cmd;        void                  arg;        status = CSL_ataHwControl (hAta, cmd, &arg);     @endverbatim *  ============================================================================ */#pragma CODE_SECTION (CSL_ataHwControl, ".text:csl_section:ata");CSL_Status  CSL_ataHwControl (    CSL_AtaHandle               hAta,    CSL_AtaHwControlCmd         cmd,    void                       *arg){    CSL_Status status = CSL_SOK;    if (hAta == NULL) {        return CSL_ESYS_BADHANDLE;    }    switch (cmd) {        case CSL_ATA_CMD_UDMA_TIMING_MODE:            CSL_ataUdmaTmgMode (hAta, *(Uint8*)arg);            return status;        case CSL_ATA_CMD_MISR_ON:            CSL_ataMisrOn (hAta, *(Uint8*)arg);            return status;        case CSL_ATA_CMD_MISR_OFF:            CSL_ataMisrOff (hAta);            return status;        case CSL_ATA_CMD_IODFTM_EN_BREAK:            CSL_ataIodftmBreakEnable (hAta);            return status;        case CSL_ATA_CMD_IODFTM_ENABLE:            CSL_ataIodftmEnable (hAta);            return status;        case CSL_ATA_CMD_EXTERNAL_ENABLE:            CSL_ataExternalEnable (hAta);            return status;        case CSL_ATA_CMD_IODFTM_UDMA_ENABLE:            CSL_ataIodftmUdmaEnable (hAta);            return status;        case CSL_ATA_CMD_IODFTM_PIO_ENABLE:            CSL_ataIodftmPioEnable (hAta);            return status;        case CSL_ATA_CMD_MMS_OUT:            CSL_ataMmsOutSel (hAta);            return status;        case CSL_ATA_CMD_MMS_IN:            CSL_ataMmsInSel (hAta);            return status;        case CSL_ATA_CMD_TEST_ENABLE:            CSL_ataTestModeEnable (hAta);            return status;        case CSL_ATA_CMD_NORMAL_ENABLE:            CSL_ataNormalModeEnable (hAta);            return status;        case CSL_ATA_CMD_TEST_OP_ENABLE:            CSL_ataTestOutputEnable (hAta);            return status;        case CSL_ATA_CMD_TEST_OP_DISABLE:            CSL_ataTestOutputDisable (hAta);            return status;        case CSL_ATA_CMD_SET_MISR_STATE:            CSL_ataSetMisrState (hAta, *(Uint8*)arg);            return status;        default :            break;    }    if (hAta->ataNum == CSL_ATA_PRIMARY) {        switch (cmd) {            case CSL_ATA_CMD_PIOENABLE:                CSL_ataP_PIOEnable (hAta);                break;            case CSL_ATA_CMD_PIODISABLE:                CSL_ataP_PIODisable (hAta);                break;            case CSL_ATA_CMD_DMASTARTREAD:                CSL_ataP_DMAStartRead (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_DMASTARTWRITE:                CSL_ataP_DMAStartWrite (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_UDMASTARTREAD:                CSL_ataP_UDMAStartRead (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_UDMASTARTWRITE:                CSL_ataP_DMAStartWrite (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_DMASTOP:            case CSL_ATA_CMD_UDMASTOP:                CSL_ataP_DMA_UDMA_Stop (hAta);                break;            case CSL_ATA_CMD_IORDYTIMEOUTCLEAR:                CSL_ataP_IORDYTimeOutClear (hAta);                break;            case CSL_ATA_CMD_INTRSTATUSCLEAR:                CSL_ataP_IntrStatusClear (hAta);                break;            case CSL_ATA_CMD_DMAERRORCLEAR:                CSL_ataP_DMAErrorClear (hAta);                break;            case CSL_ATA_CMD_DMADESCTABLE:                CSL_ataP_DMADescTable (hAta, *(Uint32 *)arg);                break;            default:                return CSL_ESYS_INVCMD;        }    }    else if (hAta->ataNum == CSL_ATA_SECONDARY) {        switch (cmd) {            case CSL_ATA_CMD_PIOENABLE:                CSL_ataS_PIOEnable (hAta);                break;            case CSL_ATA_CMD_PIODISABLE:                CSL_ataS_PIODisable (hAta);                break;            case CSL_ATA_CMD_DMASTARTREAD:                CSL_ataS_DMAStartRead (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_DMASTARTWRITE:                CSL_ataS_DMAStartWrite (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_UDMASTARTREAD:                CSL_ataS_UDMAStartRead (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_UDMASTARTWRITE:                CSL_ataS_DMAStartWrite (hAta, *(Uint32*)arg);                break;            case CSL_ATA_CMD_DMASTOP:            case CSL_ATA_CMD_UDMASTOP:                CSL_ataS_DMA_UDMA_Stop (hAta);                break;            case CSL_ATA_CMD_IORDYTIMEOUTCLEAR:                CSL_ataS_IORDYTimeOutClear (hAta);                break;            case CSL_ATA_CMD_INTRSTATUSCLEAR:                CSL_ataS_IntrStatusClear (hAta);                break;            case CSL_ATA_CMD_DMAERRORCLEAR:                CSL_ataS_DMAErrorClear (hAta);                break;            case CSL_ATA_CMD_DMADESCTABLE:                CSL_ataS_DMADescTable (hAta, *(Uint32 *)arg);                break;            default:                return CSL_ESYS_INVCMD;        }    }    else {        return CSL_ESYS_FAIL;    }    return status;}

⌨️ 快捷键说明

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