static int sysconfig_i2c_bitstream_burst_complete(struct sysconfig_priv *priv)
{
struct i2c_client *client = to_i2c_client(priv->dev);
/*
* Отправляем 4 байта холостого хода (0xFF).
* Это заставит контроллер i.MX95 выдать ровно 32 такта SCL на шину.
* Эти импульсы жизненно необходимы внутреннему автомату CrossLink-NX,
* чтобы завершить фазу Wake-up, отпустить INITN и поднять DONE в High.
*/
u8 dummy_clocks[4] = { 0xFF, 0xFF, 0xFF, 0xFF };
struct i2c_msg msg;
int ret;
msg.addr = client->addr;
msg.flags = client->flags & I2C_M_TEN; // Строго БЕЗ NOSTART, чтобы завершить транзакцию STOP-битом
msg.len = sizeof(dummy_clocks);
msg.buf = dummy_clocks;
ret = i2c_transfer(client->adapter, &msg, 1);
if (ret < 0) {
dev_err(priv->dev, "Wake-up clocks injection failed: %d\n", ret);
return ret;
}
dev_info(priv->dev, "I2C Wake-up clocks generated successfully.\n");
return 0;
}