@@ -129,7 +129,20 @@ static uint8_t imx_spi_selected_channel(IMXSPIState *s)
static uint32_t imx_spi_burst_length(IMXSPIState *s)
{
- return EXTRACT(s->regs[ECSPI_CONREG], ECSPI_CONREG_BURST_LENGTH) + 1;
+ uint32_t burst;
+
+ burst = EXTRACT(s->regs[ECSPI_CONREG], ECSPI_CONREG_BURST_LENGTH) + 1;
+ if (burst % 8) {
+ qemu_log_mask(LOG_UNIMP,
+ "[%s]%s: burst length (%d) not multiple of 8!\n",
+ TYPE_IMX_SPI, __func__, burst);
+ burst = ROUND_UP(burst, 8);
+ qemu_log_mask(LOG_UNIMP,
+ "[%s]%s: burst length rounded up to %d; this may not work.\n",
+ TYPE_IMX_SPI, __func__, burst);
+ }
+
+ return burst;
}
static bool imx_spi_is_enabled(IMXSPIState *s)