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


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

	priv->reset_gpio = of_get_named_gpio(dev->of_node, "rst-gpios", 0);
	if (gpio_is_valid(priv->reset_gpio)) {
		ret = devm_gpio_request_one(dev, priv->reset_gpio, GPIOF_OUT_INIT_HIGH,
					    "fpga_csi_bridge_mipi_reset");
		if (ret < 0) {
			dev_err(dev, "Failed to set reset pin\n");
			return ret;
		}
	}

	/* power-up completes in approx 2ms, according to specifications */
	usleep_range(2000, 2500);
	ret = fpga_csi_bridge_parse_dt(priv);
	if (ret)
		return ret;
	ret = fpga_csi_bridge_v4l2_init(priv);
	if (ret)
		return ret;
	return 0;
}