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


static int sysconfig_isc_enable(struct sysconfig_priv *priv)
{
	u8 activation_key[] = SYSCONFIG_I2C_ACTIVATION_KEY;
	u8 isc_enable[] = SYSCONFIG_ISC_ENABLE;
	u32 status;
	int ret;

	/* 
	 * ШАГ 1: Отправляем ключ активации порта Slave I2C.
	 * Это разблокирует конфигурационный автомат CrossLink-NX.
	 */
	dev_info(priv->dev, "Sending I2C Activation Key...\n");
	ret = sysconfig_cmd_write(priv, activation_key, sizeof(activation_key));
	if (ret) {
		dev_err(priv->dev, "Failed to send I2C Activation Key\n");
		return ret;
	}

	/* Небольшая пауза, чтобы ПЛИС обработала ключ */
	usleep_range(1000, 2000);

	/* ШАГ 2: Переходим к стандартной команде ISC ENABLE */
	ret = sysconfig_cmd_write(priv, isc_enable, sizeof(isc_enable));
	if (ret)
		return ret;

	ret = sysconfig_poll_status(priv, &status);
	if (ret)
		return ret;

	if (status & SYSCONFIG_STATUS_FAIL)
		return -EFAULT;

	return 0;
}