#include "iodefine.h"
#include "src_ctrl.h"

void init_src(void)
{
	SRC0.SRCCTRL.BIT.SRCEN		= 0;

	CPG.STBCR6.BIT.MSTP62		= 0;	/* SRC0へクロックを供給 */

	SRC0.SRCIDCTRL.BIT.IED		= 0;	/* 0:ビッグエンディアン 1:リトルエンディアン */
	SRC0.SRCIDCTRL.BIT.IEN		= 1;	/* 入力データエンプティ割込みイネーブル */
	SRC0.SRCIDCTRL.BIT.IFTRG	= 0;	/* 入力FIFOデータ数トリガ */

	SRC0.SRCODCTRL.BIT.OCH		= 0;	/* 出力データチャネルスワップ */
	SRC0.SRCODCTRL.BIT.OED		= 0;	/* 0:ビッグエンディアン 1:リトルエンディアン */
	SRC0.SRCODCTRL.BIT.OEN		= 0;	/* 出力データフル割込みイネーブル */
	SRC0.SRCODCTRL.BIT.OFTRG	= 0;	/* 出力FIFOデータ数トリガ */

	SRC0.SRCCTRL.BIT.CEEN		= 0;	/* 変換処理終了割込みイネーブル */
	SRC0.SRCCTRL.BIT.SRCEN		= 0;	/* モジュールイネーブル */
	SRC0.SRCCTRL.BIT.UDEN		= 0;	/* 出力FIFOアンダーフロー割込みイネーブル */
	SRC0.SRCCTRL.BIT.OVEN		= 0;	/* 出力FIFOオーバーライト割込みイネーブル */
	SRC0.SRCCTRL.BIT.FL			= 0;	/* 内部ワークメモリフラッシュ */
	SRC0.SRCCTRL.BIT.CL			= 1;	/* 内部ワークメモリクリア */
	SRC0.SRCCTRL.BIT.IFS		= 0;	/* 入力サンプリングレート */
	SRC0.SRCCTRL.BIT.OFS		= 1;	/* 出力サンプリングレート:48.0kHz */

	SRC0.SRCCTRL.BIT.SRCEN		= 1;

	return;
}

/* 入力サンプリングレート設定 */
void src_change_ifs(int fs)
{
	SRC0.SRCCTRL.BIT.SRCEN	= 0;
	SRC0.SRCCTRL.BIT.IFS =	fs == 0 ? 9 :	/* 44.1kHz */
							fs == 1 ? 10 :	/* 48.0kHz */
							fs == 2 ? 8 :	/* 32.0kHz */
							10;				/* 予約 */
	SRC0.SRCCTRL.BIT.SRCEN	= 1;
}
