/*****************************************************************************
* Copyright (c) 2007 Digi International Inc., All Rights Reserved
* 
* This software contains proprietary and confidential information of Digi
* International Inc.  By accepting transfer of this copy, Recipient agrees
* to retain this software in confidence, to prevent disclosure to others,
* and to make no use of this software other than that for which it was
* delivered.  This is an unpublished copyrighted work of Digi International
* Inc.  Except as permitted by federal law, 17 USC 117, copying is strictly
* prohibited.
* 
* Restricted Rights Legend
*
* Use, duplication, or disclosure by the Government is subject to
* restrictions set forth in sub-paragraph (c)(1)(ii) of The Rights in
* Technical Data and Computer Software clause at DFARS 252.227-7031 or
* subparagraphs (c)(1) and (2) of the Commercial Computer Software -
* Restricted Rights at 48 CFR 52.227-19, as applicable.
*
* Digi International Inc. 11001 Bren Road East, Minnetonka, MN 55343
*
*****************************************************************************/

#ifndef _SDIOPIC_H
#define _SDIOPIC_H

#include <nastatus.h>

#ifdef __cplusplus
extern "C" {
#endif

#define NA_SDIO_RECOMMENDED_INITIAL_CLOCK_DIVISOR       (0x70)
#define NA_SDIO_RECOMMENDED_FULL_SPEED_CLOCK_DIVISOR    (0x4)

#define NA_SDIO_INTERRUPT_ENABLE                        (1)
#define NA_SDIO_INTERRUPT_DISABLE                       (0)

#define NA_SDIO_DIVISOR_REGISTER                        (0)
#define NA_SDIO_INTERRUPT_CONTROL_REGISTER              (1)

#define NA_SDIO_MAX_INTERFACES                          (2)

typedef struct
{
    void *semaphoreContext;
    void *picSemaphoreContext;
    unsigned long volatile *clockDivisor;
    unsigned long volatile *interruptControl;
} NaSdioTable2Type_t;


#define NA_SDIO_PIC0_CONTROL_0

extern NaSdioTable2Type_t naSdioTable2[];

NaStatus naSdioInitialize(unsigned interface);

void naSdioDrvrGetSemaphore(void *context);
void naSdioDrvrReleaseSemaphore(void *context);

#ifdef __cplusplus
}
#endif

#endif
