git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/twl_wrapsdk/trunk@95 4ee2a332-4b2b-5046-8439-1ba90f034370
This commit is contained in:
nakasima 2007-05-29 12:06:49 +00:00
parent ea28219429
commit 0cee338ff1
17 changed files with 891 additions and 1 deletions

View File

@ -43,7 +43,8 @@ SRCS = \
snd_alarm.c \
snd_command.c \
snd_data.c \
snd_i2s.c
snd_i2s.c \
snd_mic.c \
TARGET_LIB = libsnd_sp$(TWL_LIBSUFFIX).a

View File

@ -0,0 +1,178 @@
/*---------------------------------------------------------------------------*
Project: CtrSDK - MIC
File: mic.c
Copyright 2006 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl.h>
#include <twl/snd/ARM7/snd_mic.h>
static void MICi_ExDmaRecvAsync( u32 dmaNo, void *dest, s32 size );
void MICi_ExDmaInterruptHandler( void );
void MICi_DmaInterruptHandler( void );
void MICi_FifoInterruptHandler( void );
static MICWork micWork;
/*---------------------------------------------------------------------------*
Name: MICi_Start
Description: start MIC
Arguments: dtc : enable DTC or not
Returns: None
*---------------------------------------------------------------------------*/
void MICi_Start( MICSampleRate smp, u32 dmaNo, void *dest, s32 size )
{
MICWork *wp = &micWork;
OSIntrMode enabled;
wp->dmaNo = dmaNo;
wp->buf = dest;
wp->bufSize = size;
MICi_Stop();
enabled = OS_DisableInterrupts();
if ( dest != NULL )
{
if ( MI_EXDMA_CH_MIN <= dmaNo && dmaNo <= MI_EXDMA_CH_MAX )
{
u32 ch = dmaNo + MI_EXDMA_CH_MIN;
MIi_StopExDma( dmaNo );
MICi_ExDmaRecvAsync( dmaNo, dest, size );
OS_SetIrqFunction( OS_IE_DMA4 + ch, MICi_ExDmaInterruptHandler );
reg_OS_IF = (OS_IE_DMA4 << ch);
reg_OS_IE |= (OS_IE_DMA4 << ch); // enable mic dma interrupt
}
}
SND_Enable();
// start monoral sampling
reg_SND_MICCNT = (u8)REG_SND_MICCNT_FIFO_CLR_MASK;
reg_SND_MICCNT = (u8)(REG_SND_MICCNT_E_MASK | REG_SND_MICCNT_NR_MASK | MIC_INTR_OVERFLOW
| smp);
(void)OS_RestoreInterrupts(enabled);
}
/*---------------------------------------------------------------------------*
Name: MICi_Stop
Description: stop MIC
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void MICi_Stop( void )
{
MICWork *wp = &micWork;
OSIntrMode enabled = OS_DisableInterrupts();
if ( reg_SND_MICCNT & REG_SND_MICCNT_E_MASK )
{
u32 dmaNo = wp->dmaNo;
reg_SND_MICCNT &= ~REG_SND_MICCNT_E_MASK;
if ( MI_EXDMA_CH_MIN <= dmaNo && dmaNo <= MI_EXDMA_CH_MAX )
{
u32 ch = dmaNo + MI_EXDMA_CH_MIN;
MIi_StopExDma( dmaNo );
reg_OS_IE &= ~(OS_IE_DMA4 << ch); // disable mic dma interrupt
reg_OS_IF = (OS_IE_DMA4 << ch);
}
else
{
reg_OS_IE2 &= ~(OS_IE_MIC >> 32); // disable mic fifo interrupt
reg_OS_IF2 = (OS_IE_MIC >> 32);
}
}
(void)OS_RestoreInterrupts(enabled);
}
/*---------------------------------------------------------------------------*
Name: MICi_ExDmaRecvAsync
Description: receive data with DMA
async version
Arguments: dmaNo : DMA channel No.
dest : destination address
size : size (byte)
Returns: None
*---------------------------------------------------------------------------*/
static void MICi_ExDmaRecvAsync( u32 dmaNo, void *dest, s32 size )
{
u32 interval = (0x2C0 * 16) - 16;
MIExDmaPrescaler prescale = MI_EXDMA_PRESCALER_1;
MIi_ExDmaRecvAsyncCore( dmaNo, (void*)REG_MIC_FIFO_ADDR, dest,
(u32)size, (u32)size,
MI_EXDMA_BLOCK_32B, interval, prescale,
MI_EXDMA_CONTINUOUS_ON, MI_EXDMA_SRC_RLD_ON, MI_EXDMA_DEST_RLD_ON,
MI_EXDMA_TIMING_MIC );
}
/*---------------------------------------------------------------------------*
Name: MICi_ExDmaInterruptHandler
Description: interrupt handler
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void MICi_ExDmaInterruptHandler( void )
{
// MICWork *wp = &micWork;
// OS_TPrintf( "*" );
// MICi_ExDmaRecvAsync( wp->dmaNo, wp->buf, wp->bufSize );
}
/*---------------------------------------------------------------------------*
Name: MICi_FifoInterruptHandler
Description: interrupt handler
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void MICi_FifoInterruptHandler( void )
{
MICWork *wp = &micWork;
MIi_CpuSend32( (void*)REG_MIC_FIFO_ADDR, wp->buf, (u32)wp->bufSize );
}

View File

@ -22,6 +22,8 @@ include $(TWLSDK_ROOT)/build/buildtools/commondefs
SUBDIRS = channel \
capture \
mic-1 \
mic-2 \
#----------------------------------------------------------------------------

View File

@ -0,0 +1,44 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - SND - demos - channel
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
#TWL_CODEGEN = THUMB
TWL_PROC = ARM7
TARGET_BIN = mic7_1.axf
SRCS = main.c
#SRCDIR = # using default
#LCFILE = # using default
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,63 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - tests - snd - mic-1
File: main.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: main.c,v $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl_sp.h>
#include <twl/mic.h>
#include <math.h>
// ===== スレッド優先度 =====
#define THREAD_PRIO_SND 6
#define MY_MIC_BUF_LEN 0x100
u16 micBuf[MY_MIC_BUF_LEN] __attribute__ ((aligned (32)));
void TwlSpMain(void)
{
int i, ii;
OS_Init();
OS_InitThread();
// サウンド初期化
SND_Init(THREAD_PRIO_SND);
OS_TPrintf("\nARM7 starts.\n");
MICi_Start( MIC_SMP_ALL, MIC_DEFAULT_DMA_NO, micBuf, sizeof(micBuf) );
OS_TPrintf( "\nMIC starts.\n");
OS_SpinWait( OS_MSEC_TO_CPUCYC( 60 ) );
MICi_Stop();
OS_TPrintf( "\nMIC stops.\n");
OS_TPrintf( "\nDump mic buffer.\n" );
for (i=0; i<MY_MIC_BUF_LEN/16; i++)
{
for (ii=0; ii<16; ii++)
{
OS_TPrintf( "%4.4x ", micBuf[i*16+ii] );
}
OS_TPrintf( "\n" );
}
OS_TPrintf( "\n" );
OS_TPrintf("\nARM7 ends.\n");
OS_Terminate();
}

View File

@ -0,0 +1,43 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - SND - demos - channel
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
#TWL_CODEGEN = THUMB
TARGET_BIN = mic9_1.axf
SRCS = main.c
#SRCDIR = # using default
#LCFILE = # using default
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,35 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - SND - tests - mic-1
File: main.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: main.c,v $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl.h>
/*---------------------------------------------------------------------------*
Name: TwlMain
Description: main
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void TwlMain()
{
OS_Init();
OS_TPrintf("\nARM9 starts.\n");
OS_TPrintf("\nARM9 ends.\n");
OS_Terminate();
}

View File

@ -0,0 +1,32 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - build
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
ARM7 \
ARM9 \
#----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,44 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - SND - demos - channel
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
#TWL_CODEGEN = THUMB
TWL_PROC = ARM7
TARGET_BIN = mic7_2.axf
SRCS = main.c
#SRCDIR = # using default
#LCFILE = # using default
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,207 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - tests - snd - mic-2
File: main.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: main.c,v $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl_sp.h>
#include <twl/mic.h>
#include <math.h>
#define ENABLE_PSG
#define MY_MIC_BUF_LEN 0x100
#define MPI 3.14159265358979323846
#define MY_SND_16
#ifdef MY_SND_16
#define MY_SND_BYTES 2
#define MY_SND_DATA_MAX 0x7fff
#define MY_SND_WAVE_FMT SND_WAVE_FORMAT_PCM16
#define MY_SND_CAP_FMT SND_CAPTURE_FORMAT_PCM16
typedef s16 mySndType;
#else
#define MY_SND_BYTES 1
#define MY_SND_DATA_MAX 0x7f
#define MY_SND_WAVE_FMT SND_WAVE_FORMAT_PCM8
#define MY_SND_CAP_FMT SND_CAPTURE_FORMAT_PCM8
typedef s8 mySndType;
#endif
#define MY_SND_FREQ 0x160 // 0x200
#define MY_SND_BUF_LEN (0x0400/MY_SND_BYTES)
#define MY_SND_CAPTURE_LEN (0x1000/MY_SND_BYTES)
u16 micBuf[MY_MIC_BUF_LEN] __attribute__ ((aligned (32)));
mySndType wavBuf[2][MY_SND_BUF_LEN] __attribute__ ((aligned (32)));
mySndType capBuf[2][MY_SND_CAPTURE_LEN] __attribute__ ((aligned (32)));
static void MY_SndInit( void )
{
OSIntrMode enabled;
int i;
for (i=0; i<MY_SND_BUF_LEN; i++)
{
wavBuf[0][i] = (mySndType)(sin( 2 * MPI * i / MY_SND_BUF_LEN ) * MY_SND_DATA_MAX);
}
for (i=0; i<MY_SND_BUF_LEN-1; i++)
{
wavBuf[1][i] = wavBuf[0][i+1];
}
wavBuf[1][MY_SND_BUF_LEN-1] = wavBuf[0][0];
enabled = OS_DisableInterrupts();
SND_Enable();
SND_SetMasterVolume( SND_MASTER_VOLUME_MAX );
SND_SetOutputSelector( SND_OUTPUT_MIXER, SND_OUTPUT_MIXER, SND_CHANNEL_OUT_BYPASS, SND_CHANNEL_OUT_BYPASS );
SND_SetupCapture( SND_CAPTURE_0, MY_SND_CAP_FMT, &capBuf[0], sizeof(capBuf[0])/4, TRUE,
SND_CAPTURE_IN_MIXER, SND_CAPTURE_OUT_NORMAL );
SND_SetupCapture( SND_CAPTURE_1, MY_SND_CAP_FMT, &capBuf[1], sizeof(capBuf[1])/4, TRUE,
SND_CAPTURE_IN_MIXER, SND_CAPTURE_OUT_NORMAL );
SND_StartCaptureBoth();
#ifdef ENABLE_PSG
SND_SetupChannelPsg( 8, SND_DUTY_4_8, SND_CHANNEL_VOLUME_MAX, SND_CHANNEL_DATASHIFT_1BIT, 0x0000, SND_CHANNEL_PAN_CENTER );
SND_StartChannel( 8 );
#else // ENABLE_PCM
SND_SetupChannelPcm( 1, &capBuf[0], MY_SND_WAVE_FMT, SND_CHANNEL_LOOP_REPEAT, 0, sizeof(capBuf[0])/4,
SND_CHANNEL_VOLUME_MAX, SND_CHANNEL_DATASHIFT_NONE, MY_SND_FREQ, SND_CHANNEL_PAN_MIN );
SND_SetupChannelPcm( 3, &capBuf[1], MY_SND_WAVE_FMT, SND_CHANNEL_LOOP_REPEAT, 0, sizeof(capBuf[1])/4,
SND_CHANNEL_VOLUME_MAX, SND_CHANNEL_DATASHIFT_NONE, MY_SND_FREQ, SND_CHANNEL_PAN_MAX );
SND_SetupChannelPcm( 0, &wavBuf[0], MY_SND_WAVE_FMT, SND_CHANNEL_LOOP_REPEAT, 0, sizeof(wavBuf[0])/4,
SND_CHANNEL_VOLUME_MAX, SND_CHANNEL_DATASHIFT_NONE, MY_SND_FREQ, SND_CHANNEL_PAN_MIN );
SND_SetupChannelPcm( 2, &wavBuf[1], MY_SND_WAVE_FMT, SND_CHANNEL_LOOP_REPEAT, 0, sizeof(wavBuf[1])/4,
SND_CHANNEL_VOLUME_MAX, SND_CHANNEL_DATASHIFT_NONE, MY_SND_FREQ, SND_CHANNEL_PAN_MAX );
SND_StartChannel( 1 );
SND_StartChannel( 3 );
SND_StartChannel( 0 );
SND_StartChannel( 2 );
#endif // ENABLE_PCM
(void)OS_RestoreInterrupts(enabled);
}
static void MY_SndTerminate( void )
{
int i;
OSIntrMode enabled = OS_DisableInterrupts();
SND_StopCapture( SND_CAPTURE_0 );
SND_StopCapture( SND_CAPTURE_1 );
for (i=0; i<16; i++)
{
SND_StopChannel( i, 0 );
}
(void)OS_RestoreInterrupts(enabled);
}
static void PrintfCaptureBuf( int startIdx )
{
int i, ii;
for (i=0; i<2; i++)
{
OS_TPrintf( "%s : ", i ==0 ? "L" : "R" );
for (ii=0; ii<16; ii++)
{
OS_TPrintf( MY_SND_BYTES == 2 ? "%4.4x " : "%2.2x ", (u16)capBuf[i][startIdx + ii] );
}
OS_TPrintf( "\n" );
}
}
static void CheckSound( void )
{
int i;
OS_TPrintf( "\nDump reverb buffer.\n" );
OS_TPrintf( "[Top]\n" );
PrintfCaptureBuf( 0 );
OS_TPrintf( "[Bottom]\n" );
PrintfCaptureBuf( MY_SND_CAPTURE_LEN - 16 );
OS_TPrintf( "\nDump mic buffer.\n" );
for (i=0; i<16; i++)
{
OS_TPrintf( "%4.4x ", micBuf[i] );
}
OS_TPrintf( "\n" );
}
static void TestFunc( void )
{
MY_SndInit();
OS_TPrintf( "\nSound starts.\n" );
MICi_Start( MIC_SMP_ALL, MIC_DEFAULT_DMA_NO, micBuf, sizeof(micBuf) );
OS_TPrintf( "\nMIC starts.\n");
OS_SpinWait( OS_MSEC_TO_CPUCYC( 60 ) );
MICi_Stop();
OS_TPrintf( "\nMIC stops.\n");
MY_SndTerminate();
OS_TPrintf( "\nSound stops.\n" );
CheckSound();
}
void TwlSpMain(void)
{
OS_Init();
OS_TPrintf("\nARM7 starts.\n");
// round robin dma test
OS_TPrintf( "\nChange Round Robin Mode.\n" );
MIi_SetExDmaArbitration( MI_EXDMAGBL_ARB_PRIORITY );
TestFunc();
OS_SpinWait( OS_MSEC_TO_CPUCYC( 60 ) );
// priority dma test
OS_TPrintf( "\nChange Priority Mode.\n" );
MIi_SetExDmaArbitration( MI_EXDMAGBL_ARB_ROUND_ROBIN );
MIi_SetExDmaYieldCycles( MI_EXDMAGBL_YLD_CYCLE_DEFAULT );
TestFunc();
OS_TPrintf("\nARM7 ends.\n");
OS_Terminate();
}

View File

@ -0,0 +1,43 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - SND - demos - channel
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
SUBDIRS =
#----------------------------------------------------------------------------
#TWL_CODEGEN = THUMB
TARGET_BIN = mic9_2.axf
SRCS = main.c
#SRCDIR = # using default
#LCFILE = # using default
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
do-build: $(TARGETS)
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -0,0 +1,35 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - SND - tests - mic-2
File: main.c
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: main.c,v $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#include <twl.h>
/*---------------------------------------------------------------------------*
Name: TwlMain
Description: main
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void TwlMain()
{
OS_Init();
OS_TPrintf("\nARM9 starts.\n");
OS_TPrintf("\nARM9 ends.\n");
OS_Terminate();
}

View File

@ -0,0 +1,32 @@
#! make -f
#----------------------------------------------------------------------------
# Project: TwlSDK - build
# File: Makefile
#
# Copyright 2007 Nintendo. All rights reserved.
#
# These coded instructions, statements, and computer programs contain
# proprietary information of Nintendo of America Inc. and/or Nintendo
# Company Ltd., and are protected by Federal copyright law. They may
# not be disclosed to third parties or copied or duplicated in any form,
# in whole or in part, without the prior written consent of Nintendo.
#
# $Log: $
# $NoKeywords: $
#----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/commondefs
#----------------------------------------------------------------------------
SUBDIRS = \
ARM7 \
ARM9 \
#----------------------------------------------------------------------------
include $(TWLSDK_ROOT)/build/buildtools/modulerules
#===== End of Makefile =====

View File

@ -21,6 +21,7 @@
#include <twl/os.h>
#include <twl/mi.h>
#include <twl/aes.h>
#include <twl/mic.h>
#ifdef SDK_DEBUGGER_KMC
#include <twl/vlink.h>
#endif // SDK_DEBUGGER_KMC

25
include/twl/mic.h Normal file
View File

@ -0,0 +1,25 @@
/*---------------------------------------------------------------------------*
Project: TwlSDK - include - MIC
File: mic.h
Copyright 2007 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_MIC_H_
#define TWL_MIC_H_
#ifdef SDK_ARM7
#include <twl/snd/ARM7/snd_mic.h>
#endif // SDK_ARM7
/* TWL_MIC_H_ */
#endif

View File

@ -35,6 +35,25 @@ typedef enum
}
OSChipType;
typedef u32 OSCpuCycle;
#define OS_CPU_CLOCK HW_CPU_CLOCK
//---- sec to cpu cycle
// 150nsec - 30sec
#define OS_SEC_TO_CPUCYC( sec ) ((OSCpuCycle)( ( OS_CPU_CLOCK * (u32)(sec)) ))
#define OS_MSEC_TO_CPUCYC( msec ) ((OSCpuCycle)( ((OS_CPU_CLOCK/1000) * (u32)(msec)) ))
#define OS_USEC_TO_CPUCYC( usec ) ((OSCpuCycle)( ((OS_CPU_CLOCK/1000) * (u32)(usec)) / 1000 ))
#define OS_NSEC_TO_CPUCYC( nsec ) ((OSCpuCycle)( ((OS_CPU_CLOCK/1000) * (u32)(nsec)) / (1000 * 1000) ))
//---- cpu cycle to sec
// 150nsec - 30sec
#define OS_CPUCYC_TO_SEC( cyc ) ( ((u32)(cyc) ) / OS_CPU_CLOCK )
#define OS_CPUCYC_TO_MSEC( cyc ) ( ((u32)(cyc) ) / (OS_CPU_CLOCK/1000) )
#define OS_CPUCYC_TO_USEC( cyc ) ( ((u32)(cyc) * 1000) / (OS_CPU_CLOCK/1000) )
#define OS_CPUCYC_TO_NSEC( cyc ) ( ((u32)(cyc) * 1000 * 1000) / (OS_CPU_CLOCK/1000) )
#ifdef __cplusplus
} /* extern "C" */

View File

@ -0,0 +1,86 @@
/*---------------------------------------------------------------------------*
Project: CtrSDK - MIC - include
File: snd_mic.h
Copyright 2006 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef TWL_SND_MIC_H_
#define TWL_SND_MIC_H_
#include <twl/types.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef enum
{
MIC_INTR_DISABLE = (0x0UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_HALF = (0x1UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_OVERFLOW = (0x2UL << REG_SND_MICCNT_IM_SHIFT),
MIC_INTR_HALF_OVERFLOW = (0x3UL << REG_SND_MICCNT_IM_SHIFT)
}
MICIntrCond;
typedef enum
{
MIC_SMP_ALL = (0x0UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_2 = (0x1UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_3 = (0x2UL << REG_SND_MICCNT_FIFO_SMP_SHIFT),
MIC_SMP_1_4 = (0x3UL << REG_SND_MICCNT_FIFO_SMP_SHIFT)
}
MICSampleRate;
typedef struct
{
u32 dmaNo; // DMA No
void* buf;
s32 bufSize;
}
MICWork;
#define MIC_DEFAULT_DMA_NO 6
/*---------------------------------------------------------------------------*
Name: MICi_Start
Description: start MIC
Arguments: id : slave id
Returns: None
*---------------------------------------------------------------------------*/
void MICi_Start( MICSampleRate smp, u32 dmaNo, void *dest, s32 size );
/*---------------------------------------------------------------------------*
Name: MICi_Stop
Description: stop MIC
Arguments: None
Returns: None
*---------------------------------------------------------------------------*/
void MICi_Stop( void );
#ifdef __cplusplus
} /* extern "C" */
#endif
/* TWL_SND_MIC_H_ */
#endif