diff options
Diffstat (limited to 'firmware/drivers/audio')
-rw-r--r-- | firmware/drivers/audio/as3514.c | 14 |
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 */ |
31 | int as3514_regs[0x1D]; | 31 | int 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 | } |