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


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;
}