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