Commit 9125aee7 authored by Paul Elder's avatar Paul Elder Committed by Mauro Carvalho Chehab
Browse files

media: rkisp1: Save info pointer in rkisp1_device



To make it possible to use the rkisp1_info after probe time (for
instance to make code conditional on the ISP version), save it in the
main rkisp1_device structure. To achieve this, also move the info
structure into the common header, and document it.

While at it, drop a NULL check in rkisp1_probe() for the match data as
it can't happen.

Signed-off-by: default avatarPaul Elder <paul.elder@ideasonboard.com>
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarDafna Hirschfeld <dafna@fastmail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent cdce5b95
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -91,6 +91,26 @@ enum rkisp1_isp_pad {
	RKISP1_ISP_PAD_MAX
};

/*
 * struct rkisp1_info - Model-specific ISP Information
 *
 * @clks: array of ISP clock names
 * @clk_size: number of entries in the @clks array
 * @isrs: array of ISP interrupt descriptors
 * @isr_size: number of entries in the @isrs array
 * @isp_ver: ISP version
 *
 * This structure contains information about the ISP specific to a particular
 * ISP model, version, or integration in a particular SoC.
 */
struct rkisp1_info {
	const char * const *clks;
	unsigned int clk_size;
	const struct rkisp1_isr_data *isrs;
	unsigned int isr_size;
	enum rkisp1_cif_isp_version isp_ver;
};

/*
 * struct rkisp1_sensor_async - A container for the v4l2_async_subdev to add to the notifier
 *				of the v4l2-async API
@@ -386,6 +406,7 @@ struct rkisp1_debug {
 * @pipe:	   media pipeline
 * @stream_lock:   serializes {start/stop}_streaming callbacks between the capture devices.
 * @debug:	   debug params to be exposed on debugfs
 * @info:	   version-specific ISP information
 */
struct rkisp1_device {
	void __iomem *base_addr;
@@ -404,6 +425,7 @@ struct rkisp1_device {
	struct media_pipeline pipe;
	struct mutex stream_lock; /* serialize {start/stop}_streaming cb between capture devices */
	struct rkisp1_debug debug;
	const struct rkisp1_info *info;
};

/*
+3 −12
Original line number Diff line number Diff line
@@ -105,14 +105,6 @@ struct rkisp1_isr_data {
	irqreturn_t (*isr)(int irq, void *ctx);
};

struct rkisp1_info {
	const char * const *clks;
	unsigned int clk_size;
	const struct rkisp1_isr_data *isrs;
	unsigned int isr_size;
	enum rkisp1_cif_isp_version isp_ver;
};

/* ----------------------------------------------------------------------------
 * Sensor DT bindings
 */
@@ -469,14 +461,13 @@ static int rkisp1_probe(struct platform_device *pdev)
	int ret, irq;
	u32 cif_id;

	info = of_device_get_match_data(&pdev->dev);
	if (!info)
		return -ENODEV;

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

	info = of_device_get_match_data(dev);
	rkisp1->info = info;

	dev_set_drvdata(dev, rkisp1);
	rkisp1->dev = dev;