platspecific.c

来自「AU1100嵌入式处理器SD卡驱动程序源码」· C语言 代码 · 共 92 行

C
92
字号
/*++
Copyright (c) 2004  BSQUARE Corporation.  All rights reserved.

Module Name:

    platspecific.c

Module Description:

    This file contains platform specific functions for the SD driver.

Author:

    Ian Rae 19-Aug-2004

Notes:

Revision History:

--*/

#include "sdcardddk.h"
#include "sdhcd.h"
#include "sdio.h"
#include <gpio.h>


int SDIOPlatNumSlots()
{
	return 1;
}

// card insertion interrupts
// mapping BCSR etc
SD_API_STATUS SDIOPlatInit(PSDIO_HW_CONTEXT pController)
{
    SD_API_STATUS    status = SD_API_STATUS_SUCCESS;
	
	    // initialize card insertion GPIOs as inputs
    GPIO_SetAsInput(pController->hGPIO, GPIO_16 | GPIO_17 );

        // connect slot 0 insertion interrupt
    pController->Slots[0].InsertionSysIntr = InterruptConnect(Internal,
                                                              0,
                                                              HWINTR_GPIO16,
                                                              0);

    if (SYSINTR_NOP==pController->Slots[0].InsertionSysIntr) {
        DbgPrintZo(SDCARD_ZONE_ERROR,(TEXT("InterruptConnect returned SYSINTR_NOP\r\n")));
        status = SD_API_STATUS_INSUFFICIENT_RESOURCES;
    }

	return status;
}

SD_API_STATUS SDIOPlatDeinit(PSDIO_HW_CONTEXT pController)
{
    return SD_API_STATUS_SUCCESS;
}

SD_API_STATUS SDIOPlatPower(PSDIO_HW_CONTEXT pController, BOOL PowerOn, ULONG Slot)
{
	return SD_API_STATUS_SUCCESS;
}

BOOL SDIOPlatCardWriteProteced(PSDIO_HW_CONTEXT pController, ULONG Slot)
{
	ULONG GPIOState;

    GPIO_GetState(pController->hGPIO,&GPIOState);

    if (GPIOState & GPIO_17) {
		return TRUE;
	} else {
		return FALSE;
	}
}


BOOL SDIOPlatCardInserted(PSDIO_HW_CONTEXT pController, ULONG Slot)
{
	ULONG GPIOState;

    GPIO_GetState(pController->hGPIO,&GPIOState);

    if (~GPIOState & GPIO_16) {
		return TRUE;
	} else {
		return FALSE;
	}
}

⌨️ 快捷键说明

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