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);
}
/* 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);
}