static int sysconfig_i2c_bitstream_burst_complete(struct sysconfig_priv *priv)
{
// Несколько байт BYPASS (0xFF) для генерации тактов завершения (Wake-up)
static const u8 bypass_clocks[] = {0xFF};
int ret;
/* 2. Отправляем пустые байты 0xFF.
* Они сгенерируют необходимые такты на внутренней шине для старта Wake-up последовательности */
ret = sysconfig_i2c_cmd_transfer(priv, bypass_clocks, sizeof(bypass_clocks), NULL, 0);
if (ret) {
dev_err(priv->dev, "Failed to send Bypass clocks\n");
return ret;
}
printk("%s(%d) cmd=0x%X ret=%d\n",__FUNCTION__,__LINE__,bypass_clocks[0],ret);
ret = sysconfig_i2c_cmd_transfer(priv, bypass_clocks, sizeof(bypass_clocks), NULL, 0);
if (ret) {
dev_err(priv->dev, "Failed to send Bypass clocks\n");
return ret;
}
printk("%s(%d) cmd=0x%X ret=%d\n",__FUNCTION__,__LINE__,bypass_clocks[0],ret);
/* 3. Небольшая пауза, чтобы FPGA успела применить настройки и поднять DONE.
* Для Nexus рекомендуется сделать паузу от 100 мкс до нескольких миллисекунд (если включено сжатие битстрима) */
usleep_range(1000, 2000);
return 0;
}