SDHI_driver patch (mbedOS 5.11.5)

Revision:
2:7c75ab32d7c9
Parent:
1:b07be64e592e
--- a/mbed-os-program/mbed-os/targets/TARGET_RENESAS/TARGET_RZ_A1XX/TARGET_VK_RZ_A1H/device/SDHI_driver/sdhi_low.c	Mon Mar 18 12:48:38 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1055 +0,0 @@
-/*******************************************************************************
-* DISCLAIMER
-* This software is supplied by Renesas Electronics Corporation and is only
-* intended for use with Renesas products. No other uses are authorized. This
-* software is owned by Renesas Electronics Corporation and is protected under
-* all applicable laws, including copyright laws.
-* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
-* THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT
-* LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
-* AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.
-* TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS
-* ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE
-* FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR
-* ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE
-* BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-* Renesas reserves the right, without notice, to make changes to this software
-* and to discontinue the availability of this software. By using this software,
-* you agree to the additional terms and conditions found by accessing the
-* following link:
-* http://www.renesas.com/disclaimer
-*
-* Copyright (C) 2013 Renesas Electronics Corporation. All rights reserved.
-*******************************************************************************/
-/*******************************************************************************
-* File Name    : sd_dev_low.c
-* $Rev: $
-* $Date::                           $
-* Device(s)    : RZ/A1H
-* Tool-Chain   : DS-5 Ver 5.8
-*              : ARM Complier
-* OS           : 
-* H/W Platform : RZ/A1H CPU Board
-* Description  : RZ/A1H SD Driver Sample Program
-* Operation    : 
-* Limitations  : 
-*******************************************************************************/
-
-
-/******************************************************************************
-Includes   <System Includes> , "Project Includes"
-******************************************************************************/
-#include <stdio.h>
-#include <string.h>
-#include "r_typedefs.h"
-#include "iodefine.h"
-#include "rza_io_regrw.h"
-/*#include "devdrv_intc.h"*/
-#include "sdif.h"
-#include "sd_cfg.h"
-/*#include "sd_dev_dmacdrv.h"*/
-#include "us_ticker_api.h"
-#include  "cmsis_os2.h"
-#include    "mbed_assert.h"
-#include    "pinmap.h"
-
-
-/******************************************************************************
-Typedef definitions
-******************************************************************************/
-
-
-/******************************************************************************
-Macro definitions
-******************************************************************************/
-//#define MTU_TIMER_CNT      32    /* P-phy = 32MHz         */
-#define INT_LEVEL_SDHI     10    /* SDHI interrupt level  */
-#define SDHI_PINS_COMMON	2
-#define SDHI_PINS_SERIAL	3
-#define SDHI_PINS_PARALLEL	6
-
-#if defined(SDCFG_SDMODE_1BIT)
-# define SDHI_PORT_MODE	SD_PORT_SERIAL
-#else
-# define SDHI_PORT_MODE	SD_PORT_PARALLEL
-#endif
-
-/******************************************************************************
-Imported global variables and functions (from other files)
-******************************************************************************/
-
-
-/******************************************************************************
-Exported global variables and functions (to be accessed by other files)
-******************************************************************************/
-
-
-/******************************************************************************
-Private global variables and functions
-******************************************************************************/
-#if 0
-static uint8_t g_sdhi_priority_backup;
-#endif
-
-
-
-static const PinName SDHIpin_Common[SDHI_COUNT][SDHI_PINS_COMMON] = { /* WP & CD */
-		{P4_8, P4_9},
-		{P3_8, P3_9}
-};
-
-static const PinName SDHIpin_serial[SDHI_COUNT][SDHI_PINS_SERIAL] = { /* CLK CMD D0 */
-		{P4_11, P4_12, P4_13},
-		{P3_11, P3_12, P3_13}
-};
-
-static const PinName SDHIpin_parallel[SDHI_COUNT][SDHI_PINS_PARALLEL] = { /* CLK CMD D0-D3 */
-		{P4_10, P4_11, P4_12, P4_13, P4_14, P4_15},
-		{P3_10, P3_11, P3_12, P3_13, P3_14, P3_15}
-};
-
-
-static const PinMap PinMap_SDHI_PIN[] = {
-      /*  pin  | periph| func  */
-		{P4_8  , SDHI_0, 3}, 	/* SD_CD_0  */
-		{P4_9  , SDHI_0, 3},	/* SD_WP_0  */
-		{P4_10 , SDHI_0, 3},	/* SD_D1_0  */
-		{P4_11 , SDHI_0, 3},	/* SD_D0_0  */
-		{P4_12 , SDHI_0, 3},	/* SD_CLK_0 */
-		{P4_13 , SDHI_0, 3},	/* SD_CMD_0 */
-		{P4_14 , SDHI_0, 3},    /* SD_D3_0  */
-		{P4_15 , SDHI_0, 3},	/* SD_D2_0  */
-		/*----------------*/
-		{P3_8  , SDHI_1, 7},	/* SD_CD_1  */
-		{P3_9  , SDHI_1, 7},	/* SD_WP_1  */
-		{P3_10 , SDHI_1, 7},	/* SD_D1_1  */
-		{P3_11 , SDHI_1, 7},	/* SD_D0_1  */
-		{P3_12 , SDHI_1, 7},	/* SD_CLK_1 */
-		{P3_13 , SDHI_1, 7},	/* SD_CMD_1 */
-		{P3_14 , SDHI_1, 7},	/* SD_D3_1  */
-		{P3_15 , SDHI_1, 7},	/* SD_D2_1  */
-		{NC    , NC    , 0}
-};
-
-
-
-static unsigned long _ulStart = 0;
-static unsigned long _ulDelta = 0;
-static const ticker_data_t *_ticker;
-
-//static int sddev_init_0(void);
-//static int sddev_init_1(void);
-//static int sddev_set_port_0(int mode);
-//static int sddev_set_port_1(int mode);
-
-static int sddev_init_dma_0(unsigned long buff,unsigned long reg,long cnt,int dir);
-static int sddev_init_dma_1(unsigned long buff,unsigned long reg,long cnt,int dir);
-
-static int sddev_wait_dma_end_0(long cnt);
-static int sddev_wait_dma_end_1(long cnt);
-
-static int sddev_disable_dma_0(void);
-static int sddev_disable_dma_1(void);
-
-static void sddev_sd_int_handler_0(uint32_t int_sense);
-static void sddev_sd_int_handler_1(uint32_t int_sense);
-static void sddev_sdio_int_handler_0(uint32_t int_sense);
-static void sddev_sdio_int_handler_1(uint32_t int_sense);
-static void sddev_start_timer(int msec);
-static void sddev_end_timer(void);
-static int  sddev_check_timer(void);
-
-/******************************************************************************
-* Function Name: int sddev_cmd0_sdio_mount(int sd_port);
-* Description  : Select to issue CMD0 before SDIO Mount
-* Arguments    : none
-* Return Value : SD_OK  : issue CMD0
-*              : SD_ERR : not issue CMD0
-******************************************************************************/
-int sddev_cmd0_sdio_mount(int sd_port)
-{
-#ifdef SDCFG_IO
-    return SD_ERR;
-#else
-    return SD_ERR;
-#endif
-}
-
-/******************************************************************************
-* Function Name: int sddev_cmd8_sdio_mount(int sd_port);
-* Description  : Select to issue CMD8 before SDIO Mount
-* Arguments    : none
-* Return Value : SD_OK  : issue CMD8
-*              : SD_ERR : not issue CMD8
-******************************************************************************/
-int sddev_cmd8_sdio_mount(int sd_port)
-{
-#ifdef SDCFG_IO
-    return SD_OK;
-#else
-    return SD_ERR;
-#endif
-}
-
-
-
-/******************************************************************************
-* Function Name: int sddev_init(void);
-* Description  : Initialize H/W to use SDHI
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_init(int sd_port)
-{
-	if ( sd_port >= SDHI_COUNT )
-		return SD_ERR;
-
-
-    volatile uint8_t dummy_buf;
-
-    CPG.STBCR12 = 0xF0u;        /* [1], [1], [1], [1], SDHI00, SDHI01, SDHI10, SDHI11           */
-    dummy_buf   = CPG.STBCR12;  /* (Dummy read)                                                 */
-
-
-    for( uint32_t no=0; no < SDHI_PINS_COMMON; no++ )
-    {
-    	if ( pinmap_peripheral(SDHIpin_Common[sd_port][no], PinMap_SDHI_PIN ) != sd_port)
-    	{
-    		return SD_ERR;
-    	}
-    	pinmap_pinout(SDHIpin_Common[sd_port][no], PinMap_SDHI_PIN);
-    }
-
-    sddev_set_port(sd_port, SDHI_PORT_MODE);
-
-#ifdef    SDCFG_HWINT
-	if ( sd_port == (uint32_t)SDHI_0 )
-	{
-	    InterruptHandlerRegister(SDHI0_0_IRQn, sddev_sd_int_handler_0);
-	    GIC_SetPriority(SDHI0_0_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI0_0_IRQn);
-
-	    InterruptHandlerRegister(SDHI0_3_IRQn, sddev_sd_int_handler_0);
-	    GIC_SetPriority(SDHI0_3_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI0_3_IRQn);
-
-	    InterruptHandlerRegister(SDHI0_1_IRQn, sddev_sdio_int_handler_0);
-	    GIC_SetPriority(SDHI0_1_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI0_1_IRQn);
-	}
-	else if ( sd_port == (uint32_t)SDHI_1 )
-	{
-	    InterruptHandlerRegister(SDHI1_0_IRQn, sddev_sd_int_handler_1);
-	    GIC_SetPriority(SDHI1_0_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI1_0_IRQn);
-
-	    InterruptHandlerRegister(SDHI1_3_IRQn, sddev_sd_int_handler_1);
-	    GIC_SetPriority(SDHI1_3_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI1_3_IRQn);
-
-	    InterruptHandlerRegister(SDHI1_1_IRQn, sddev_sdio_int_handler_1);
-	    GIC_SetPriority(SDHI1_1_IRQn, INT_LEVEL_SDHI);
-	    GIC_EnableIRQ(SDHI1_1_IRQn);
-	}
-#endif
-
-    /* ---- wait card detect ---- */
-    osDelay(1000);			/* wait 1s */
-
-    return SD_OK;
-}
-
-
-/******************************************************************************
-* Function Name: int sddev_power_on(int sd_port);
-* Description  : Power-on H/W to use SDHI
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_power_on(int sd_port)
-{
-    /* ---Power On SD ---- */
-
-    /* ---- Wait for  SD Wake up ---- */
-	osDelay(100);            /* wait 100ms */
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_power_off(int sd_port);
-* Description  : Power-off H/W to use SDHI
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_power_off(int sd_port)
-{
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_read_data(int sd_port, unsigned char *buff,unsigned long reg_addr,long num);
-* Description  : read from SDHI buffer FIFO
-* Arguments    : unsigned char *buff    : buffer addrees to store reading datas
-*              : unsigned long reg_addr : SDIP FIFO address
-*              : long num               : counts to read(unit:byte)
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_read_data(int sd_port, unsigned char *buff,unsigned long reg_addr,long num)
-{
-    long i;
-    long cnt;
-    unsigned long *reg;
-    unsigned long *ptr_l;
-    unsigned char *ptr_c;
-    unsigned long tmp;
-
-    reg = (unsigned long *)(reg_addr);
-
-    cnt = (num / 4);
-    if(((unsigned long)buff & 0x3) != 0)
-    {
-        ptr_c = (unsigned char *)buff;
-        for(i = cnt; i > 0 ; i--)
-        {
-            tmp = *reg;
-            *ptr_c++ = (unsigned char)(tmp);
-            *ptr_c++ = (unsigned char)(tmp >> 8);
-            *ptr_c++ = (unsigned char)(tmp >> 16);
-            *ptr_c++ = (unsigned char)(tmp >> 24);
-        }
-
-        cnt = (num % 4);
-        if( cnt != 0 )
-        {
-            tmp = *reg;
-            for(i = cnt; i > 0 ; i--)
-            {
-                *ptr_c++ = (unsigned char)(tmp);
-                tmp >>= 8;
-            }
-        }
-    }
-    else
-    {
-        ptr_l = (unsigned long *)buff;
-        for(i = cnt; i > 0 ; i--)
-        {
-            *ptr_l++ = *reg;
-        }
-
-        cnt = (num % 4);
-        if( cnt != 0 )
-        {
-            ptr_c = (unsigned char *)ptr_l;
-            tmp = *reg;
-            for(i = cnt; i > 0 ; i--)
-            {
-                *ptr_c++ = (unsigned char)(tmp);
-                tmp >>= 8;
-            }
-        }
-    }
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_write_data(int sd_port, unsigned char *buff,unsigned long reg_addr,long num);
-* Description  : write to SDHI buffer FIFO
-* Arguments    : unsigned char *buff    : buffer addrees to store writting datas
-*              : unsigned long reg_addr : SDIP FIFO address
-*              : long num               : counts to write(unit:byte)
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_write_data(int sd_port, unsigned char *buff,unsigned long reg_addr,long num)
-{
-    long i;
-    unsigned long *reg = (unsigned long *)(reg_addr);
-    unsigned long *ptr = (unsigned long *)buff;
-    unsigned long tmp;
-
-    /* dont care non 4byte allignment data */
-    num += 3;
-    num /= 4;
-    if(((unsigned long)buff & 0x3) != 0)
-    {
-        for(i = num; i > 0 ; i--)
-        {
-            tmp  = *buff++ ;
-            tmp |= *buff++ << 8;
-            tmp |= *buff++ << 16;
-            tmp |= *buff++ << 24;
-            *reg = tmp;
-        }
-    }
-    else
-    {
-        for(i = num; i > 0 ; i--)
-        {
-            *reg = *ptr++;
-        }
-    }
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: unsigned int sddev_get_clockdiv(int sd_port, int clock);
-* Description  : write to SDHI buffer FIFO
-* Arguments    : int clock : request clock frequency
-*              :   SD_CLK_50MHz
-*              :   SD_CLK_25MHz
-*              :   SD_CLK_20MHz
-*              :   SD_CLK_10MHz
-*              :   SD_CLK_5MHz
-*              :   SD_CLK_1MHz
-*              :   SD_CLK_400kHz
-* Return Value : clock div value
-*              :   SD_DIV_2 : 1/2   clock
-*              :   SD_DIV_2 : 1/4   clock
-*              :   SD_DIV_2 : 1/8   clock
-*              :   SD_DIV_2 : 1/16  clock
-*              :   SD_DIV_2 : 1/128 clock
-*              :   SD_DIV_2 : 1/256 clock
-******************************************************************************/
-unsigned int sddev_get_clockdiv(int sd_port, int clock)
-{
-    unsigned int div;
-
-    switch(clock)
-    {
-    case SD_CLK_50MHz:
-        div = SD_DIV_2;        /* 64MHz/2 = 32MHz */
-        break;
-    case SD_CLK_25MHz:
-        div = SD_DIV_4;        /* 64MHz/4 = 16MHz */
-        break;
-    case SD_CLK_20MHz:
-        div = SD_DIV_4;        /* 64MHz/4 = 16MHz */
-        break;
-    case SD_CLK_10MHz:
-        div = SD_DIV_8;        /* 64MHz/8 = 8MHz */
-        break;
-    case SD_CLK_5MHz:
-        div = SD_DIV_16;       /* 64MHz/16 = 4MHz */
-        break;
-    case SD_CLK_1MHz:
-        div = SD_DIV_128;      /* 64MHz/128 = 512kHz */
-        break;
-    case SD_CLK_400kHz:
-        div = SD_DIV_256;      /* 64MHz/256 = 256kHz */
-        break;
-    default:
-        div = SD_DIV_256;
-        break;
-    }
-
-    return div;
-}
-
-/******************************************************************************
-* Function Name: int sddev_set_port(int sd_port, int mode);
-* Description  : setting ports to use MMCHI
-* Arguments    : int mode : SD_PORT_PARALLEL : 4bit mode
-*                         : SD_PORT_SERIAL   : 1bit mode
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_set_port(int sd_port, int mode)
-{
-	if ( sd_port >= SDHI_COUNT)
-		return SD_ERR;
-
-    if(mode == SD_PORT_SERIAL)
-    {
-        for( uint32_t no=0; no < SDHI_PINS_SERIAL; no++ )
-        {
-        	if ( pinmap_peripheral(SDHIpin_serial[sd_port][no], PinMap_SDHI_PIN ) != sd_port)
-        	{
-        		return SD_ERR;
-        	}
-        	pinmap_pinout(SDHIpin_serial[sd_port][no], PinMap_SDHI_PIN);
-        }
-    }
-    else if( mode == SD_PORT_PARALLEL )
-    {
-        for( uint32_t no=0; no < SDHI_PINS_PARALLEL; no++ )
-        {
-        	if ( pinmap_peripheral(SDHIpin_parallel[sd_port][no], PinMap_SDHI_PIN ) != sd_port)
-        	{
-        		return SD_ERR;
-        	}
-        	pinmap_pinout(SDHIpin_parallel[sd_port][no], PinMap_SDHI_PIN);
-        }
-    }
-    else
-    {
-    	return SD_ERR;
-    }
-
-    return SD_OK;
-}
-
-
-/******************************************************************************
-* Function Name: int sddev_int_wait(int sd_port, int time);
-* Description  : Waitting for SDHI Interrupt
-* Arguments    : int time : time out value to wait interrupt
-* Return Value : get interrupt : SD_OK
-*              : time out      : SD_ERR
-******************************************************************************/
-int sddev_int_wait(int sd_port, int time)
-{
-    sddev_start_timer(time);
-    while( sddev_check_timer() == SD_OK )
-    {
-        /* interrupt generated? */
-        if(sd_check_int(sd_port) == SD_OK)
-        {
-            sddev_end_timer();
-            return SD_OK;
-        }
-    }
-
-    sddev_end_timer();
-
-    return SD_ERR;
-}
-
-/******************************************************************************
-* Function Name: int sddev_init_dma(unsigned long buff,unsigned long reg,long cnt,int dir);
-* Description  : Initialize DMAC to transfer data from SDHI FIFO
-* Arguments    : unsigned long buff : buffer addrees to transfer datas
-*              : unsigned long reg  : SDIP FIFO address
-*              : long cnt           : counts to transfer(unit:byte)
-*              : int dir            : direction to transfer
-*              :                    :   0 : FIFO -> buffer
-*              :                    :   1 : buffer -> FIFO
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_init_dma(int sd_port, unsigned long buff,unsigned long reg,long cnt,int dir)
-{
-    int ret;
-
-    if( sd_port == 0 )
-    {
-        ret = sddev_init_dma_0(buff, reg, cnt, dir);
-    }
-    else if( sd_port == 1 )
-    {
-        ret = sddev_init_dma_1(buff, reg, cnt, dir);
-    }
-
-    return ret;
-}
-
-/******************************************************************************
-* Function Name: static int sddev_init_dma_0(unsigned long buff,unsigned long reg,long cnt,int dir);
-* Description  : Initialize DMAC to transfer data from SDHI FIFO
-* Arguments    : unsigned long buff : buffer addrees to transfer datas
-*              : unsigned long reg  : SDIP FIFO address
-*              : long cnt           : counts to transfer(unit:byte)
-*              : int dir            : direction to transfer
-*              :                    :   0 : FIFO -> buffer
-*              :                    :   1 : buffer -> FIFO
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_init_dma_0(unsigned long buff,unsigned long reg,long cnt,int dir)
-{
-#ifdef    SDCFG_TRNS_DMA
-    dmac_transinfo_t    trans_info;
-    uint32_t            request_factor;
-    int32_t             ret;
-
-    trans_info.count     = (uint32_t)cnt;
-    #ifdef SDCFG_TRANS_DMA_64
-    if( (cnt % 64) != 0 )
-    {
-        trans_info.src_size  = DMAC_TRANS_SIZE_32;
-        trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-        if( reg & 0x0000003f )
-        {
-            trans_info.src_size  = DMAC_TRANS_SIZE_32;
-            trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-        }
-    }
-    else
-    {
-        trans_info.src_size  = DMAC_TRANS_SIZE_512;
-        trans_info.dst_size  = DMAC_TRANS_SIZE_512;
-    }
-    #else
-    trans_info.src_size  = DMAC_TRANS_SIZE_32;
-    trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-    #endif
-
-    if( dir == 0 )
-    {
-        request_factor       = DMAC_REQ_SDHI_0_RX;
-        trans_info.src_addr  = (uint32_t)reg;
-        trans_info.dst_addr  = (uint32_t)buff;
-        trans_info.saddr_dir = DMAC_TRANS_ADR_NO_INC;
-        trans_info.daddr_dir = DMAC_TRANS_ADR_INC;
-    }
-    else if( dir == 1 )
-    {
-        request_factor       = DMAC_REQ_SDHI_0_TX;
-        trans_info.src_addr  = (uint32_t)buff;
-        trans_info.dst_addr  = (uint32_t)reg;
-        trans_info.saddr_dir = DMAC_TRANS_ADR_INC;
-        trans_info.daddr_dir = DMAC_TRANS_ADR_NO_INC;
-    }
-
-    sd_DMAC1_PeriReqInit(    (const dmac_transinfo_t *)&trans_info,
-                            DMAC_MODE_REGISTER,
-                            DMAC_SAMPLE_SINGLE,
-                            request_factor,
-                            0    );        /* Dont care DMAC_REQ_REQD is setting in usb0_host_DMAC1_PeriReqInit() */
-
-    ret = sd_DMAC1_Open(DMAC_REQ_MODE_PERI);
-    if( ret != 0 )
-    {
-        printf("DMAC1 Open error!!\n");
-        return SD_ERR;
-    }
-#endif
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: static int sddev_init_dma_1(unsigned long buff,unsigned long reg,long cnt,int dir);
-* Description  : Initialize DMAC to transfer data from SDHI FIFO
-* Arguments    : unsigned long buff : buffer address to transfer datas
-*              : unsigned long reg  : SDIP FIFO address
-*              : long cnt           : counts to transfer(unit:byte)
-*              : int dir            : direction to transfer
-*              :                    :   0 : FIFO -> buffer
-*              :                    :   1 : buffer -> FIFO
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_init_dma_1(unsigned long buff,unsigned long reg,long cnt,int dir)
-{
-#ifdef    SDCFG_TRNS_DMA
-    dmac_transinfo_t    trans_info;
-    uint32_t            request_factor;
-    int32_t             ret;
-
-    trans_info.count     = (uint32_t)cnt;
-    #ifdef SDCFG_TRANS_DMA_64
-    if( (cnt % 64) != 0 )
-    {
-        trans_info.src_size  = DMAC_TRANS_SIZE_32;
-        trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-        if( reg & 0x0000003f )
-        {
-            trans_info.src_size  = DMAC_TRANS_SIZE_32;
-            trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-        }
-    }
-    else
-    {
-        trans_info.src_size  = DMAC_TRANS_SIZE_512;
-        trans_info.dst_size  = DMAC_TRANS_SIZE_512;
-    }
-    #else
-    trans_info.src_size  = DMAC_TRANS_SIZE_32;
-    trans_info.dst_size  = DMAC_TRANS_SIZE_32;
-    #endif
-
-    if( dir == 0 )
-    {
-        request_factor       = DMAC_REQ_SDHI_1_RX;
-        trans_info.src_addr  = (uint32_t)reg;
-        trans_info.dst_addr  = (uint32_t)buff;
-        trans_info.saddr_dir = DMAC_TRANS_ADR_NO_INC;
-        trans_info.daddr_dir = DMAC_TRANS_ADR_INC;
-    }
-    else if( dir == 1 )
-    {
-        request_factor       = DMAC_REQ_SDHI_1_TX;
-        trans_info.src_addr  = (uint32_t)buff;
-        trans_info.dst_addr  = (uint32_t)reg;
-        trans_info.saddr_dir = DMAC_TRANS_ADR_INC;
-        trans_info.daddr_dir = DMAC_TRANS_ADR_NO_INC;
-    }
-
-    sd_DMAC2_PeriReqInit(    (const dmac_transinfo_t *)&trans_info,
-                            DMAC_MODE_REGISTER,
-                            DMAC_SAMPLE_SINGLE,
-                            request_factor,
-                            0    );        /* Dont care DMAC_REQ_REQD is setting in usb0_host_DMAC1_PeriReqInit() */
-
-    ret = sd_DMAC2_Open(DMAC_REQ_MODE_PERI);
-    if( ret != 0 )
-    {
-        printf("DMAC1 Open error!!\n");
-        return SD_ERR;
-    }
-#endif
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_wait_dma_end(int sd_port, long cnt);
-* Description  : Wait to complete DMAC transfer
-* Arguments    : long cnt           : counts to transfer(unit:byte)
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_wait_dma_end(int sd_port, long cnt)
-{
-    int ret;
-
-    if( sd_port == 0 )
-    {
-        ret = sddev_wait_dma_end_0(cnt);
-    }
-    else if( sd_port == 1 )
-    {
-        ret = sddev_wait_dma_end_1(cnt);
-    }
-
-    return ret;
-}
-
-/******************************************************************************
-* Function Name: static int sddev_wait_dma_end_0(long cnt);
-* Description  : Wait to complete DMAC transfer
-* Arguments    : long cnt           : counts to transfer(unit:byte)
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_wait_dma_end_0(long cnt)
-{
-#ifdef    SDCFG_TRNS_DMA
-    int loop;
-    int time;
-
-    time = (cnt / 512);
-    time = ((time * 1000) / 1024);
-    if(time < 1000)
-    {
-        time = 1000;
-    }
-
-    if(time > (0x0000ffff / MTU_TIMER_CNT))
-    {
-        /* @1000ms */
-        loop = (time / 1000);
-        if( (time % 1000) != 0 )
-        {
-            loop++;
-        }
-        time = 1000;
-    }
-    else
-    {
-        loop = 1;
-    }
-
-    do{
-        sddev_start_timer(time);
-
-        while(1)
-        {
-            /* get end flag? */
-            if( sd_DMAC1_Get_Endflag() == 1 )
-            {
-                sddev_end_timer();
-                return SD_OK;
-            }
-            /* detect timeout? */
-            if(sddev_check_timer() == SD_ERR)
-            {
-                break;
-            }
-        }
-
-        loop--;
-        if( loop <= 0 )
-        {
-            break;
-        }
-
-    } while(1);
-
-    sddev_end_timer();
-
-    return SD_ERR;
-#else
-    return SD_OK;
-
-#endif
-}
-
-/******************************************************************************
-* Function Name: static int sddev_wait_dma_end_1(long cnt);
-* Description  : Wait to complete DMAC transfer
-* Arguments    : long cnt           : counts to transfer(unit:byte)
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_wait_dma_end_1(long cnt)
-{
-#ifdef    SDCFG_TRNS_DMA
-    int loop;
-    int time;
-
-    time = (cnt / 512);
-    time = ((time * 1000) / 1024);
-    if(time < 1000)
-    {
-        time = 1000;
-    }
-
-    if(time > (0x0000ffff / MTU_TIMER_CNT))
-    {
-        /* @1000ms */
-        loop = (time / 1000);
-        if( (time % 1000) != 0 )
-        {
-            loop++;
-        }
-        time = 1000;
-    }
-    else
-    {
-        loop = 1;
-    }
-
-    do{
-        sddev_start_timer(time);
-
-        while(1)
-        {
-            /* get end flag? */
-            if( sd_DMAC2_Get_Endflag() == 1 )
-            {
-                sddev_end_timer();
-                return SD_OK;
-            }
-            /* detect timeout? */
-            if(sddev_check_timer() == SD_ERR)
-            {
-                break;
-            }
-        }
-
-        loop--;
-        if( loop <= 0 )
-        {
-            break;
-        }
-
-    } while(1);
-
-    sddev_end_timer();
-
-    return SD_ERR;
-#else
-    return SD_OK;
-
-#endif
-}
-
-/******************************************************************************
-* Function Name: int sddev_disable_dma(int sd_port);
-* Description  : Disable DMAC transfer
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_disable_dma(int sd_port)
-{
-    int ret;
-
-    if( sd_port == 0 )
-    {
-        ret = sddev_disable_dma_0();
-    }
-    else
-    {
-        ret = sddev_disable_dma_1();
-    }
-    return ret;
-}
-
-/******************************************************************************
-* Function Name: static int sddev_disable_dma_0(void);
-* Description  : Disable DMAC transfer
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_disable_dma_0(void)
-{
-#ifdef    SDCFG_TRNS_DMA
-    uint32_t    remain;
-
-    sd_DMAC1_Close(&remain);
-#endif
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: staticint sddev_disable_dma_1(void);
-* Description  : Disable DMAC transfer
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-static int sddev_disable_dma_1(void)
-{
-#ifdef    SDCFG_TRNS_DMA
-    uint32_t    remain;
-
-    sd_DMAC2_Close(&remain);
-#endif
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_loc_cpu(int sd_port);
-* Description  : lock cpu to disable interrupt
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_loc_cpu(int sd_port)
-{
-#if 0
-    R_INTC_GetMaskLevel(&g_sdhi_priority_backup);
-    R_INTC_SetMaskLevel(0);
-    core_util_critical_section_enter();
-#endif
-
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_unl_cpu(int sd_port);
-* Description  : unlock cpu to enable interrupt
-* Arguments    : none
-* Return Value : success : SD_OK
-*              : fail    : SD_ERR
-******************************************************************************/
-int sddev_unl_cpu(int sd_port)
-{
-#if 0
-    R_INTC_SetMaskLevel(g_sdhi_priority_backup);
-    core_util_critical_section_exit();
-#endif
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: int sddev_finalize(int sd_port);
-* Description  : finalize SDHI
-* Arguments    : none
-* Return Value : none
-******************************************************************************/
-int sddev_finalize(int sd_port)
-{
-    return SD_OK;
-}
-
-/******************************************************************************
-* Function Name: static void sddev_sd_int_handler_0(uint32_t int_sense);
-* Description  : Setting Interrupt function for SDHI(INTC_ID_SDHI0_0,INTC_ID_SDHI0_3)
-* Arguments    : Interrupt mode
-* Return Value : none
-******************************************************************************/
-static void sddev_sd_int_handler_0(uint32_t int_sense)
-{
-    sd_int_handler(0);
-}
-
-/******************************************************************************
-* Function Name: static void sddev_sd_int_handler_1(uint32_t int_sense);
-* Description  : Setting Interrupt function for SDHI(INTC_ID_SDHI0_0,INTC_ID_SDHI0_3)
-* Arguments    : Interrupt mode
-* Return Value : none
-******************************************************************************/
-static void sddev_sd_int_handler_1(uint32_t int_sense)
-{
-    sd_int_handler(1);
-}
-
-/******************************************************************************
-* Function Name: static void sddev_sdio_int_handler_0(uint32_t int_sense);
-* Description  : Setting Interrupt function for SDHI(INTC_ID_SDHI0_1)
-* Arguments    : Interrupt mode
-* Return Value : none
-******************************************************************************/
-static void sddev_sdio_int_handler_0(uint32_t int_sense)
-{
-    sdio_int_handler(0);
-}
-
-/******************************************************************************
-* Function Name: static void sddev_sdio_int_handler_1(uint32_t int_sense);
-* Description  : Setting Interrupt function for SDHI(INTC_ID_SDHI1_1)
-* Arguments    : Interrupt mode
-* Return Value : none
-******************************************************************************/
-static void sddev_sdio_int_handler_1(uint32_t int_sense)
-{
-    sdio_int_handler(1);
-}
-
-/******************************************************************************
-* Function Name: static void sddev_start_timer(int msec);
-* Description  : start timer
-* Arguments    : 
-* Return Value : none
-******************************************************************************/
-static void sddev_start_timer(int msec)
-{
-	_ticker = get_us_ticker_data();
-    _ulStart = ticker_read(_ticker);
-    _ulDelta = msec*1000ul;
-}
-
-/******************************************************************************
-* Function Name: static void sddev_end_timer(void);
-* Description  : end timer
-* Arguments    : 
-* Return Value : none
-******************************************************************************/
-static void sddev_end_timer(void)
-{
-    _ulStart = 0ul;
-    _ulDelta = 0ul;
-}
-
-/******************************************************************************
-* Function Name: static int sddev_check_timer(void);
-* Description  : check
-* Arguments    : 
-* Return Value : t
-******************************************************************************/
-static int sddev_check_timer(void)
-{
-	if ( _ulStart && _ulDelta )
-	{
-		return ((ticker_read(_ticker)-_ulStart) < _ulDelta) ? SD_OK : SD_ERR;
-	}
-	else
-	{
-		return SD_ERR;
-	}
-}
-
-/* End of File */
-