X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fdrv%2Fwm8731.c;h=e96ce6f1614d76eb2d4949a9ede95074619f808b;hb=976d522209efc4c11a019ae6b34657b6b3f59ba0;hp=0b56af962531f84b525eef261d459ffe042dd811;hpb=b376a9255a68608fd3b2ba6ab10da1294eaf233e;p=bertos.git diff --git a/bertos/drv/wm8731.c b/bertos/drv/wm8731.c index 0b56af96..e96ce6f1 100644 --- a/bertos/drv/wm8731.c +++ b/bertos/drv/wm8731.c @@ -61,8 +61,9 @@ static void wm8731_write(Wm8731 *ctx, uint8_t reg, uint16_t value) i2c_putc(ctx->i2c, (uint8_t)((tmp & 0xFF00) >> 8)); i2c_putc(ctx->i2c, (uint8_t)(tmp & 0xFF)); - if (i2c_error(ctx->i2c)) - LOG_ERR("Error while send command to codec.\n"); + int err = i2c_error(ctx->i2c); + if (err) + LOG_ERR("Error[%d] while send command to codec.\n", err); } @@ -136,15 +137,24 @@ void wm8731_init(Wm8731 *ctx, I2c *i2c, uint8_t codec_addr) /* Configure the codec */ - wm8731_write(ctx, WM8731_REG_DIGITAL_PATH_CTRL, CONFIG_WM8731_DEEMP | CONFIG_WM8731_DAPC | - (CONFIG_WM8731_DACMU << WM8731_DACMU)); - wm8731_write(ctx, WM8731_REG_ANALOGUE_PATH_CTRL, (CONFIG_WM8731_MICBOOST ? BV(WM8731_MICBOOST) : ~BV(WM8731_MICBOOST)) | - CONFIG_WM8731_INSEL | CONFIG_WM8731_BYPASS | CONFIG_WM8731_SIDEATT); - wm8731_write(ctx, WM8731_REG_DA_INTERFACE_FORMAT, CONFIG_WM8731_INTERFACE_FORMAT | CONFIG_WM8731_IWL_BITS | - (CONFIG_WM8731_MS ? BV(WM8731_MS_BIT) : ~BV(WM8731_MS_BIT))); + wm8731_write(ctx, WM8731_REG_DIGITAL_PATH_CTRL, CONFIG_WM8731_DEEMP | CONFIG_WM8731_DAPC | (CONFIG_WM8731_DACMU << WM8731_DACMU)); + + #if CONFIG_WM8731_MICBOOST + wm8731_write(ctx, WM8731_REG_ANALOGUE_PATH_CTRL, BV(WM8731_MICBOOST) | CONFIG_WM8731_INSEL | CONFIG_WM8731_BYPASS | CONFIG_WM8731_SIDEATT); + #else + wm8731_write(ctx, WM8731_REG_ANALOGUE_PATH_CTRL, (CONFIG_WM8731_INSEL | CONFIG_WM8731_BYPASS | CONFIG_WM8731_SIDEATT) & ~BV(WM8731_MICBOOST)); + #endif + + #if CONFIG_WM8731_MS + wm8731_write(ctx, WM8731_REG_DA_INTERFACE_FORMAT, CONFIG_WM8731_INTERFACE_FORMAT | CONFIG_WM8731_IWL_BITS | BV(WM8731_MS_BIT)); + #else + wm8731_write(ctx, WM8731_REG_DA_INTERFACE_FORMAT, + (CONFIG_WM8731_INTERFACE_FORMAT | CONFIG_WM8731_IWL_BITS | BV(WM8731_MS_BIT)) & ~BV(WM8731_MS_BIT)); + #endif + wm8731_write(ctx, WM8731_REG_SAMPLECTRL, CONFIG_WM8731_SAMPLING_RATES); /* By default we turn on all devices and disable only the outclock */ wm8731_write(ctx, WM8731_REG_ACTIVE_CTRL, 1); - wm8731_write(ctx, WM8731_REG_PWDOWN_CTRL, 0x47); + wm8731_write(ctx, WM8731_REG_PWDOWN_CTRL, 0x40); }