12a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/*
22a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * SdioAdapter.h
32a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
42a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Copyright(c) 1998 - 2009 Texas Instruments. All rights reserved.
52a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * All rights reserved.
62a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
72a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Redistribution and use in source and binary forms, with or without
82a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * modification, are permitted provided that the following conditions
92a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * are met:
102a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
112a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *  * Redistributions of source code must retain the above copyright
122a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    notice, this list of conditions and the following disclaimer.
132a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *  * Redistributions in binary form must reproduce the above copyright
142a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    notice, this list of conditions and the following disclaimer in
152a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    the documentation and/or other materials provided with the
162a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    distribution.
172a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *  * Neither the name Texas Instruments nor the names of its
182a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    contributors may be used to endorse or promote products derived
192a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *    from this software without specific prior written permission.
202a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
212a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
222a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
232a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
242a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
252a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
262a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
272a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
282a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
292a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
302a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
312a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
322a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
332a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
342a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/** \file   SdioAdapter.h
352a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *  \brief  SDIO adapter module API definition
362a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
372a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *  \see    SdioAdapter.c
382a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
392a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
402a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt#ifndef __SDIO_ADAPT_API_H__
412a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt#define __SDIO_ADAPT_API_H__
422a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
432a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
442a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt#include "TxnDefs.h"
452a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
462a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
472a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/************************************************************************
482a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Defines
492a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt ************************************************************************/
502a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
512a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/************************************************************************
522a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Types
532a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt ************************************************************************/
542a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
552a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/************************************************************************
562a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Functions
572a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt ************************************************************************/
582a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/** \brief	sdioAdapt_ConnectBus: Init SDIO driver and HW
592a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
602a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  fCbFunc       - The bus driver's callback upon async transaction completion
612a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  hCbArg        - The CB function handle
622a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uBlkSizeShift - In block-mode:   BlkSize = (1 << uBlkSizeShift)
63653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt * \param  uSdioThreadPriority - The SDIO interrupt handler thread priority
642a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \return 0 = OK, otherwise = error
652a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
662a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \par Description
672a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Called by BusDrv to initialize the SDIO driver and HW.
682a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
692a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \sa
702a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
712a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidtint        sdioAdapt_ConnectBus    (void *        fCbFunc,
722a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    void *        hCbArg,
732a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  uBlkSizeShift,
74653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt                                    unsigned int  uSdioThreadPriority,
75653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt                                    unsigned char **pTxDmaSrcAddr);
76653850f71f9caaa41af19cadbab24bb5e655daf4Dmitry Shmidt
772a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/** \brief	sdioAdapt_DisconnectBus: Disconnect SDIO driver
782a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
792a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  void
802a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \return 0 = OK, otherwise = error
812a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
822a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \par Description
832a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Called by BusDrv. Disconnect the SDIO driver.
842a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
852a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \sa
862a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
872a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidtint        sdioAdapt_DisconnectBus (void);
882a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/** \brief	sdioAdapt_Transact: Process transaction
892a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
902a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uFuncId    - SDIO function ID (1- BT, 2 - WLAN)
912a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uHwAddr    - HW address where to write the data
922a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  pHostAddr  - The data buffer to write from or read into
932a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uLength    - The data length in bytes
942a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  bDirection - TRUE = Read,  FALSE = Write
952a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  bBlkMode   - If TRUE - use block mode
962a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  bMore      - If TRUE, more transactions are expected so don't turn off any HW
972a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \return COMPLETE if Txn completed in this context, PENDING if not, ERROR if failed
982a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
992a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \par Description
1002a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Called by the BusDrv module to issue an SDIO transaction.
1012a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Call write or read SDIO-driver function according to the direction.
1022a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Use Sync or Async method according to the transaction length
1032a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1042a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \note   It's assumed that this function is called only when idle (i.e. previous Txn is done).
1052a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1062a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \sa
1072a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
1082a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry ShmidtETxnStatus sdioAdapt_Transact      (unsigned int  uFuncId,
1092a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  uHwAddr,
1102a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    void *        pHostAddr,
1112a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  uLength,
1122a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bDirection,
1132a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bBlkMode,
1142a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bFixedAddr,
1152a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bMore);
1162a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt/** \brief	sdioAdapt_TransactBytes: Process bytes transaction
1172a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1182a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uFuncId    - SDIO function ID (1- BT, 2 - WLAN)
1192a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uHwAddr    - HW address where to write the data
1202a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  pHostAddr  - The data buffer to write from or read into
1212a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  uLength    - The data length in bytes
1222a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  bDirection - TRUE = Read,  FALSE = Write
1232a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \param  bMore      - If TRUE, more transactions are expected so don't turn off any HW
1242a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \return COMPLETE if Txn succeeded, ERROR if failed
1252a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1262a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \par Description
1272a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Called by the BusDrv module to issue a bytes stream SDIO transaction.
1282a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * Call write or read SDIO-driver Sync function according to the direction.
1292a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1302a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \note   It's assumed that this function is called only when idle (i.e. previous Txn is done).
1312a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt *
1322a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt * \sa
1332a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt */
1342a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry ShmidtETxnStatus sdioAdapt_TransactBytes (unsigned int  uFuncId,
1352a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  uHwAddr,
1362a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    void *        pHostAddr,
1372a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  uLength,
1382a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bDirection,
1392a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt                                    unsigned int  bMore);
1402a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
1412a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
1422a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt
1432a41c9bcfdb878f169a6794b7d7e55ec821ffa9cDmitry Shmidt#endif /*__SDIO_ADAPT_API_H__*/
144