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


static int sysconfig_i2c_bitstream_burst_write(struct sysconfig_priv *priv, const char *buf, size_t len)
{
    struct i2c_client *client = to_i2c_client(priv->dev);
    const u8 lsc_bitstream_burst = SYSCONFIG_LSC_BITSTREAM_BURST; // { 0x7A, 0x00, 0x00, 0x00 }
    int ret;

    if (len == 0)
        return 0;

    dev_info(priv->dev, "Initiating direct monolithic LPI2C Burst transfer: %zu bytes\n", len);

    /* 
     * Вызываем нашу кастомную низкоуровневую функцию ядра.
     * Она выполнит атомарную сессию без разрыва шины I2C.
     */
    ret = lpi2c_imx_xfer_burst(client->adapter, client->addr,
                               lsc_bitstream_burst, sizeof(lsc_bitstream_burst),
                               (const u8 *)buf, len);

    if (ret == 0) {
        dev_info(priv->dev, "Monolithic bitstream burst complete! Status checking next...\n");
        return 0;
	} else {
        dev_err(priv->dev, "Monolithic LPI2C burst transfer failed: %d\n", ret);
        return ret;
	}
}