/**
 * @file bsp_amakusa592.c
 * @author takemasa
 * @brief Amakusa BF592ボード用のリソース
 * @details
 * ここにはBSP専用のリソースを置く。実際にはボードの初期化子を置く。
 */
#include <s_services.h>
#include <t_services.h>
#include <cdefBF592-A.h>
#include <bsp_amakusa592.h>
#include <ad7999.h>

void board_initialize(VP_INT exinf)
{
    // ADSP-BF592 PORTG設定
    // DR0PRI, RSCK0, RFS0, TD0PRI, TSCK0, TSF0をMUXで0 ( Primary func )にする
    *pPORTG_MUX &= ~0x00ee;

    // ADSP-BF592 PORTG設定
    // DR0PRI, RSCK0, RFS0, TD0PRI, TSCK0, TSF0をFERでイネーブルにする
    *pPORTG_FER = 0x00ee;

    // PF9はNI2S_MUTEピンに接続されており、リセット後はプルダウン抵抗によりミュートされている。
    *pPORTFIO_DIR |= 1<<9;

    // PF9にHを出力して、ミュート解除する
    *pPORTFIO_SET = 1<<9;
}

/**
 * @brief ボリューム値の取得
 * @param ch 0から始まるチャンネル指定番号。Amakusaはボリュームを1個持っているだけなので、
 * 3までのインデックスを扱う
 */

fract32 get_volume(unsigned int ch)
{
    if ( ch >= UZUME_NUM_VOLUME)
        return 0;

    return ( ad7999_get_volume( ch ) );
}

/**
 * @brief ボリューム値の設定
 * @param ch 0から始まるチャンネル指定番号。AD7999は3まで
 * @param value 32bit符号付き固定小数点数のボリューム設定値
 * @details
 * ボリュームに初期値を与える。
 */

void set_volume(unsigned int ch, fract32 value)
{
}
