diff options
Diffstat (limited to 'firmware/drivers/dac.c')
-rw-r--r-- | firmware/drivers/dac.c | 38 |
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 | ||
23 | int dac_volume(unsigned int volume) | 23 | int 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 | ******************************************************************/ |
53 | int dac_config(int value) | 56 | int 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 | } |