summaryrefslogtreecommitdiff
path: root/firmware/drivers/dac.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/dac.c')
-rw-r--r--firmware/drivers/dac.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/firmware/drivers/dac.c b/firmware/drivers/dac.c
index c968246a61..63695c3c67 100644
--- a/firmware/drivers/dac.c
+++ b/firmware/drivers/dac.c
@@ -22,23 +22,26 @@
22 22
23int dac_volume(unsigned int volume) 23int dac_volume(unsigned int volume)
24{ 24{
25 int i; 25 int ret = 0;
26 unsigned char buf[16]; 26 unsigned char buf[3];
27
28 i2c_begin();
27 29
28 if(volume > 0x38) 30 if(volume > 0x38)
29 volume = 0x38; 31 volume = 0x38;
30 32
31 i=0; 33 buf[0] = DAC_REG_WRITE | DAC_AVOL;
32 buf[i++] = DAC_REG_WRITE | DAC_AVOL; 34 buf[1] = (volume & 0x3f) | 0x40; /* Deemphasis ON */
33 buf[i++] = (volume & 0x3f) | 0x40; /* Deemphasis ON */ 35 buf[2] = volume & 0x3f;
34 buf[i++] = volume & 0x3f;
35 36
36 /* send read command */ 37 /* send read command */
37 if (i2c_write(DAC_DEV_WRITE,buf,i)) 38 if (i2c_write(DAC_DEV_WRITE,buf,3))
38 { 39 {
39 return -1; 40 ret = -1;
40 } 41 }
41 return 0; 42
43 i2c_end();
44 return ret;
42} 45}
43 46
44/****************************************************************** 47/******************************************************************
@@ -52,17 +55,20 @@ int dac_volume(unsigned int volume)
52******************************************************************/ 55******************************************************************/
53int dac_config(int value) 56int dac_config(int value)
54{ 57{
55 int i; 58 int ret = 0;
56 unsigned char buf[16]; 59 unsigned char buf[2];
57 60
58 i=0; 61 i2c_begin();
59 buf[i++] = DAC_REG_WRITE | DAC_GCFG; 62
60 buf[i++] = value; 63 buf[0] = DAC_REG_WRITE | DAC_GCFG;
64 buf[1] = value;
61 65
62 /* send read command */ 66 /* send read command */
63 if (i2c_write(DAC_DEV_WRITE,buf,i)) 67 if (i2c_write(DAC_DEV_WRITE,buf,2))
64 { 68 {
65 return -1; 69 ret = -1;
66 } 70 }
71
72 i2c_end();
67 return 0; 73 return 0;
68} 74}