From 621cf0788fd69c967688692b7f19c02b6df7a322 Mon Sep 17 00:00:00 2001 From: Antonius Hellmann Date: Fri, 4 May 2007 10:28:07 +0000 Subject: bugfixes in AS3514 shadow register handling, for details see patch #7101 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13319 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/audio/as3514.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'firmware') 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 @@ #include "i2c-pp.h" /* Shadow registers */ -int as3514_regs[0x1D]; +int as3514_regs[0x1E]; /* last audio register: PLLMODE 0x1d */ /* * little helper method to set register values. @@ -41,7 +41,15 @@ static void as3514_write(int reg, int value) { DEBUGF("as3514 error reg=0x%x", reg); } - as3514_regs[reg] = value; + + if ((unsigned int)reg < sizeof(as3514_regs) / sizeof(int)) + { + as3514_regs[reg] = value; + } + else + { + DEBUGF("as3514 error reg=0x%x", reg); + } } /* convert tenth of dB volume to master volume register value */ @@ -104,7 +112,7 @@ int audiohw_init(void) as3514_write(PLLMODE, 0x04); /* read all reg values */ - for (i = 0; i < sizeof(as3514_regs); i++) + for (i = 0; i < sizeof(as3514_regs) / sizeof(int); i++) { as3514_regs[i] = i2c_readbyte(AS3514_I2C_ADDR, i); } -- cgit