summaryrefslogtreecommitdiff
path: root/firmware/drivers/audio
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/drivers/audio')
-rw-r--r--firmware/drivers/audio/as3514.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/firmware/drivers/audio/as3514.c b/firmware/drivers/audio/as3514.c
index 89761fbbe0..3490abdd2d 100644
--- a/firmware/drivers/audio/as3514.c
+++ b/firmware/drivers/audio/as3514.c
@@ -28,7 +28,7 @@
28#include "i2c-pp.h" 28#include "i2c-pp.h"
29 29
30/* Shadow registers */ 30/* Shadow registers */
31int as3514_regs[0x1D]; 31int as3514_regs[0x1E]; /* last audio register: PLLMODE 0x1d */
32 32
33/* 33/*
34 * little helper method to set register values. 34 * little helper method to set register values.
@@ -41,7 +41,15 @@ static void as3514_write(int reg, int value)
41 { 41 {
42 DEBUGF("as3514 error reg=0x%x", reg); 42 DEBUGF("as3514 error reg=0x%x", reg);
43 } 43 }
44 as3514_regs[reg] = value; 44
45 if ((unsigned int)reg < sizeof(as3514_regs) / sizeof(int))
46 {
47 as3514_regs[reg] = value;
48 }
49 else
50 {
51 DEBUGF("as3514 error reg=0x%x", reg);
52 }
45} 53}
46 54
47/* convert tenth of dB volume to master volume register value */ 55/* convert tenth of dB volume to master volume register value */
@@ -104,7 +112,7 @@ int audiohw_init(void)
104 as3514_write(PLLMODE, 0x04); 112 as3514_write(PLLMODE, 0x04);
105 113
106 /* read all reg values */ 114 /* read all reg values */
107 for (i = 0; i < sizeof(as3514_regs); i++) 115 for (i = 0; i < sizeof(as3514_regs) / sizeof(int); i++)
108 { 116 {
109 as3514_regs[i] = i2c_readbyte(AS3514_I2C_ADDR, i); 117 as3514_regs[i] = i2c_readbyte(AS3514_I2C_ADDR, i);
110 } 118 }