Re: [alsa-devel] [PATCH v5] ASoC: Add Freescale SGTL5000 codec support
On Fri, Feb 25, 2011 at 11:56:52PM +0800, Zeng Zhaoming wrote:
On Fri, Feb 25, 2011 at 8:09 PM, Mark Brown
This is going to fail on systems without voltage readback capabilities, including systems which have the regulator API disabled and stubbed out.
if the regulator driver not allow readback, I have no way to get the voltage of vdda and vddio, the voltage levels are critical to codec initialization.
Can you shed some light on howto around this?
If you can't read the data back you need to guess what the configuration is somehow; I'd suggest just picking values and warning about what you're doing.
- memcpy((void *)(&sgtl5000_regs[0] + (SGTL5000_DAP_REG_OFFSET >> 1)),
- sgtl5000_dap_regs,
- SGTL5000_MAX_REG_OFFSET - SGTL5000_DAP_REG_OFFSET);
As has been pointed out on previous revisions of the patch there is no need to cast away from void in C and it can be actively harmful.
I have not remove void* since my toolchain ( gcc 4.4.4) complains about the type mismatch, I will test it with other version toolchain to confirm.
As Timur indicated the reason this is complaining is that you're memcpy() is writing to const data. This is *clearly* buggy - the fact that casting away removes the warning is an example of why you should never have casts like this.
You should take a copy of the array and modify that, having the defaults as const is correct.
participants (1)
-
Mark Brown