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


static int fpga_csi_bridge_probe(struct i2c_client *client)
{
	struct fpga_csi_bridge_priv *priv;
	struct device *dev = &client->dev;
	int ret;

	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
	if (!priv)
		return -ENOMEM;

	priv->client = client;
	mutex_init(&priv->lock);
	i2c_set_clientdata(client, priv);

	/* ... (Ваш существующий код работы с reset_gpio, parse_dt, v4l2_init) ... */

	/* ----------------------------------------------------------------- */
	/* FPGA Manager core registration                                    */
	/* ----------------------------------------------------------------- */
	priv->fpga_priv.dev = dev;
	priv->fpga_priv.command_transfer = sysconfig_i2c_cmd_transfer;
	priv->fpga_priv.bitstream_burst_write_init = sysconfig_i2c_bitstream_burst_init;
	priv->fpga_priv.bitstream_burst_write = sysconfig_i2c_bitstream_burst_write;
	priv->fpga_priv.bitstream_burst_write_complete = sysconfig_i2c_bitstream_burst_complete;

	ret = sysconfig_probe(&priv->fpga_priv);
	if (ret) {
		dev_err(dev, "Failed to register integrated Lattice FPGA Manager\n");
		return ret;
	}

	/* ----------------------------------------------------------------- */
	/* Create the direct sysfs file manually                             */
	/* ----------------------------------------------------------------- */
	ret = device_create_file(dev, &dev_attr_load_fpga);
	if (ret) {
		dev_err(dev, "Failed to create sysfs interface file\n");
		return ret;
	}

	dev_info(dev, "Direct sysfs FPGA loader interface successfully initialized\n");
	return 0;
}