Загрузка данных


static int sysconfig_i2c_bitstream_burst_complete(struct sysconfig_priv *priv)
{
	// Команда ISC_DISABLE в формате вашей i2c-спецификации (4 байта)
	static const u8 isc_disable[] = SYSCONFIG_ISC_DISABLE; 
	// Несколько байт BYPASS (0xFF) для генерации тактов завершения (Wake-up)
	static const u8 bypass_clocks[] = {0xFF, 0xFF, 0xFF, 0xFF};
	int ret;

	/* 1. Отправляем команду ISC_DISABLE (0x26), чтобы закрыть сессию программирования */
	ret = sysconfig_cmd_write(priv, isc_disable, sizeof(isc_disable));
	if (ret) {
		dev_err(priv->dev, "Failed to send ISC_DISABLE\n");
		return ret;
	}

	/* 2. Отправляем пустые байты 0xFF.
	 * Они сгенерируют необходимые такты на внутренней шине для старта Wake-up последовательности */
	ret = sysconfig_cmd_write(priv, bypass_clocks, sizeof(bypass_clocks));
	if (ret) {
		dev_err(priv->dev, "Failed to send Bypass clocks\n");
		return ret;
	}

	/* 3. Небольшая пауза, чтобы FPGA успела применить настройки и поднять DONE.
	 * Для Nexus рекомендуется сделать паузу от 100 мкс до нескольких миллисекунд (если включено сжатие битстрима) */
	usleep_range(1000, 2000); 

	return 0;
}