Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eb569cf9 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Mauro Carvalho Chehab
Browse files

[media] soc-camera: add host clock callbacks to start and stop the master clock



Currently soc-camera uses a single camera host callback to activate the
interface master clock and to configure the interface for a specific
client. However, during probing we might not have the information about
a client, we just need to activate the clock. Add new camera host driver
callbacks to only start and stop the clock without and client-specific
configuration.

Signed-off-by: default avatarGuennadi Liakhovetski <g.liakhovetski@gmx.de>
Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent f7f6ce2d
Loading
Loading
Loading
Loading
+17 −2
Original line number Diff line number Diff line
@@ -512,10 +512,23 @@ static int soc_camera_add_device(struct soc_camera_device *icd)
	if (ici->icd)
		return -EBUSY;

	if (ici->ops->clock_start) {
		ret = ici->ops->clock_start(ici);
		if (ret < 0)
			return ret;
	}

	ret = ici->ops->add(icd);
	if (!ret)
	if (ret < 0)
		goto eadd;

	ici->icd = icd;

	return 0;

eadd:
	if (ici->ops->clock_stop)
		ici->ops->clock_stop(ici);
	return ret;
}

@@ -527,6 +540,8 @@ static void soc_camera_remove_device(struct soc_camera_device *icd)
		return;

	ici->ops->remove(icd);
	if (ici->ops->clock_stop)
		ici->ops->clock_stop(ici);
	ici->icd = NULL;
}

+2 −0
Original line number Diff line number Diff line
@@ -74,6 +74,8 @@ struct soc_camera_host_ops {
	struct module *owner;
	int (*add)(struct soc_camera_device *);
	void (*remove)(struct soc_camera_device *);
	int (*clock_start)(struct soc_camera_host *);
	void (*clock_stop)(struct soc_camera_host *);
	/*
	 * .get_formats() is called for each client device format, but
	 * .put_formats() is only called once. Further, if any of the calls to