📄 dac.c
字号:
/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id: dac.c,v 1.8 2003/11/03 23:36:36 linusnielsen Exp $ * * Copyright (C) 2002 by Linus Nielsen Feltzing * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/#include "config.h"#include "stdbool.h"#include "i2c.h"#include "debug.h"#include "dac.h"#ifdef HAVE_DAC3550Astatic bool line_in_enabled = false;static bool dac_enabled = false;int dac_volume(unsigned int left, unsigned int right, bool deemph){ int ret = 0; unsigned char buf[3]; i2c_begin(); if (left > 0x38) left = 0x38; if (right > 0x38) right = 0x38; buf[0] = DAC_REG_WRITE | DAC_AVOL; buf[1] = (left & 0x3f) | (deemph ? 0x40 : 0); buf[2] = right & 0x3f; /* send write command */ if (i2c_write(DAC_DEV_WRITE,buf,3)) { ret = -1; } i2c_end(); return ret;}/******************************************************************** Bit6: 0 = 3V 1 = 5V** Bit5: 0 = normal 1 = low power** Bit4: 0 = AUX2 off 1 = AUX2 on** Bit3: 0 = AUX1 off 1 = AUX1 on** Bit2: 0 = DAC off 1 = DAC on** Bit1: 0 = stereo 1 = mono** Bit0: 0 = normal right amp 1 = inverted right amp******************************************************************//* dac_config is called once to initialize it. we will apply our static settings because of the init flow. dac_init -> dac_line_in -> mpeg_init -> dac_config*/static int dac_config(void){ int ret = 0; unsigned char buf[2]; i2c_begin(); buf[0] = DAC_REG_WRITE | DAC_GCFG; buf[1] = (dac_enabled ? 0x04 : 0) | (line_in_enabled ? 0x08 : 0); /* send write command */ if (i2c_write(DAC_DEV_WRITE,buf,2)) { ret = -1; } i2c_end(); return ret;}void dac_enable(bool enable){ dac_enabled = enable; dac_config();}void dac_line_in(bool enable){ line_in_enabled = enable; dac_config();}void dac_init(void){ unsigned char buf[2]; i2c_begin(); buf[0] = DAC_REG_WRITE | DAC_SR_REG; buf[1] = 0x07; /* send write command */ i2c_write(DAC_DEV_WRITE,buf,2); i2c_end();}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -