All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Hans Verkuil <hverkuil@xs4all.nl>,
	linux-media@vger.kernel.org
Cc: linux-renesas-soc@vger.kernel.org,
	"Kieran Bingham" <kieran.bingham@ideasonboard.com>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
Subject: [PATCH v14 07/33] rcar-vin: move model information to own struct
Date: Sat, 14 Apr 2018 13:57:00 +0200	[thread overview]
Message-ID: <20180414115726.5075-8-niklas.soderlund+renesas@ragnatech.se> (raw)
In-Reply-To: <20180414115726.5075-1-niklas.soderlund+renesas@ragnatech.se>

When Gen3 support is added to the driver more than model ID will be
different for the different SoCs. To avoid a lot of if statements in the
code create a struct rvin_info to store this information.

While we are at it rename the poorly chosen enum which contains the
different model IDs from chip_id to model_id. Also sort the compatible
string entries and make use of of_device_get_match_data() which will
always work as the driver is DT only, so there's always a valid match.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: Hans Verkuil <hans.verkuil@cisco.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/media/platform/rcar-vin/rcar-core.c | 56 +++++++++++++++++++++--------
 drivers/media/platform/rcar-vin/rcar-v4l2.c |  3 +-
 drivers/media/platform/rcar-vin/rcar-vin.h  | 14 ++++++--
 3 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/drivers/media/platform/rcar-vin/rcar-core.c b/drivers/media/platform/rcar-vin/rcar-core.c
index 64daf92bc66dd81b..71d66916ce1b28ab 100644
--- a/drivers/media/platform/rcar-vin/rcar-core.c
+++ b/drivers/media/platform/rcar-vin/rcar-core.c
@@ -241,21 +241,53 @@ static int rvin_digital_graph_init(struct rvin_dev *vin)
  * Platform Device Driver
  */
 
+static const struct rvin_info rcar_info_h1 = {
+	.model = RCAR_H1,
+};
+
+static const struct rvin_info rcar_info_m1 = {
+	.model = RCAR_M1,
+};
+
+static const struct rvin_info rcar_info_gen2 = {
+	.model = RCAR_GEN2,
+};
+
 static const struct of_device_id rvin_of_id_table[] = {
-	{ .compatible = "renesas,vin-r8a7794", .data = (void *)RCAR_GEN2 },
-	{ .compatible = "renesas,vin-r8a7793", .data = (void *)RCAR_GEN2 },
-	{ .compatible = "renesas,vin-r8a7791", .data = (void *)RCAR_GEN2 },
-	{ .compatible = "renesas,vin-r8a7790", .data = (void *)RCAR_GEN2 },
-	{ .compatible = "renesas,vin-r8a7779", .data = (void *)RCAR_H1 },
-	{ .compatible = "renesas,vin-r8a7778", .data = (void *)RCAR_M1 },
-	{ .compatible = "renesas,rcar-gen2-vin", .data = (void *)RCAR_GEN2 },
-	{ },
+	{
+		.compatible = "renesas,vin-r8a7778",
+		.data = &rcar_info_m1,
+	},
+	{
+		.compatible = "renesas,vin-r8a7779",
+		.data = &rcar_info_h1,
+	},
+	{
+		.compatible = "renesas,vin-r8a7790",
+		.data = &rcar_info_gen2,
+	},
+	{
+		.compatible = "renesas,vin-r8a7791",
+		.data = &rcar_info_gen2,
+	},
+	{
+		.compatible = "renesas,vin-r8a7793",
+		.data = &rcar_info_gen2,
+	},
+	{
+		.compatible = "renesas,vin-r8a7794",
+		.data = &rcar_info_gen2,
+	},
+	{
+		.compatible = "renesas,rcar-gen2-vin",
+		.data = &rcar_info_gen2,
+	},
+	{ /* Sentinel */ },
 };
 MODULE_DEVICE_TABLE(of, rvin_of_id_table);
 
 static int rcar_vin_probe(struct platform_device *pdev)
 {
-	const struct of_device_id *match;
 	struct rvin_dev *vin;
 	struct resource *mem;
 	int irq, ret;
@@ -264,12 +296,8 @@ static int rcar_vin_probe(struct platform_device *pdev)
 	if (!vin)
 		return -ENOMEM;
 
-	match = of_match_device(of_match_ptr(rvin_of_id_table), &pdev->dev);
-	if (!match)
-		return -ENODEV;
-
 	vin->dev = &pdev->dev;
-	vin->chip = (enum chip_id)match->data;
+	vin->info = of_device_get_match_data(&pdev->dev);
 
 	mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (mem == NULL)
diff --git a/drivers/media/platform/rcar-vin/rcar-v4l2.c b/drivers/media/platform/rcar-vin/rcar-v4l2.c
index 4a0610a6b4503501..0a035667c0b0e93f 100644
--- a/drivers/media/platform/rcar-vin/rcar-v4l2.c
+++ b/drivers/media/platform/rcar-vin/rcar-v4l2.c
@@ -266,7 +266,8 @@ static int __rvin_try_format(struct rvin_dev *vin,
 	pix->sizeimage = max_t(u32, pix->sizeimage,
 			       rvin_format_sizeimage(pix));
 
-	if (vin->chip == RCAR_M1 && pix->pixelformat == V4L2_PIX_FMT_XBGR32) {
+	if (vin->info->model == RCAR_M1 &&
+	    pix->pixelformat == V4L2_PIX_FMT_XBGR32) {
 		vin_err(vin, "pixel format XBGR32 not supported on M1\n");
 		return -EINVAL;
 	}
diff --git a/drivers/media/platform/rcar-vin/rcar-vin.h b/drivers/media/platform/rcar-vin/rcar-vin.h
index 385243e3d4da130b..b63c4fce68adaae6 100644
--- a/drivers/media/platform/rcar-vin/rcar-vin.h
+++ b/drivers/media/platform/rcar-vin/rcar-vin.h
@@ -29,7 +29,7 @@
 /* Address alignment mask for HW buffers */
 #define HW_BUFFER_MASK 0x7f
 
-enum chip_id {
+enum model_id {
 	RCAR_H1,
 	RCAR_M1,
 	RCAR_GEN2,
@@ -86,11 +86,19 @@ struct rvin_graph_entity {
 	unsigned int sink_pad;
 };
 
+/**
+ * struct rvin_info - Information about the particular VIN implementation
+ * @model:		VIN model
+ */
+struct rvin_info {
+	enum model_id model;
+};
+
 /**
  * struct rvin_dev - Renesas VIN device structure
  * @dev:		(OF) device
  * @base:		device I/O register space remapped to virtual memory
- * @chip:		type of VIN chip
+ * @info:		info about VIN instance
  *
  * @vdev:		V4L2 video device associated with VIN
  * @v4l2_dev:		V4L2 device
@@ -119,7 +127,7 @@ struct rvin_graph_entity {
 struct rvin_dev {
 	struct device *dev;
 	void __iomem *base;
-	enum chip_id chip;
+	const struct rvin_info *info;
 
 	struct video_device vdev;
 	struct v4l2_device v4l2_dev;
-- 
2.16.2

  parent reply	other threads:[~2018-04-14 11:59 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-14 11:56 [PATCH v14 00/33] rcar-vin: Add Gen3 with media controller Niklas Söderlund
2018-04-14 11:56 ` [PATCH v14 01/33] dt-bindings: media: rcar_vin: Reverse SoC part number list Niklas Söderlund
2018-04-14 11:56 ` [PATCH v14 02/33] dt-bindings: media: rcar_vin: add device tree support for r8a774[35] Niklas Söderlund
2018-04-14 11:56 ` [PATCH v14 03/33] rcar-vin: add Gen3 devicetree bindings documentation Niklas Söderlund
2018-05-02 13:10   ` Geert Uytterhoeven
2018-04-14 11:56 ` [PATCH v14 04/33] rcar-vin: rename poorly named initialize and cleanup functions Niklas Söderlund
2018-04-14 11:56 ` [PATCH v14 05/33] rcar-vin: unregister video device on driver removal Niklas Söderlund
2018-04-14 11:56 ` [PATCH v14 06/33] rcar-vin: move subdevice handling to async callbacks Niklas Söderlund
2018-04-14 11:57 ` Niklas Söderlund [this message]
2018-04-14 11:57 ` [PATCH v14 08/33] rcar-vin: move max width and height information to chip information Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 09/33] rcar-vin: move functions regarding scaling Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 10/33] rcar-vin: all Gen2 boards can scale simplify logic Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 11/33] rcar-vin: set a default field to fallback on Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 12/33] rcar-vin: fix handling of single field frames (top, bottom and alternate fields) Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 13/33] rcar-vin: update bytesperline and sizeimage calculation Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 14/33] rcar-vin: align pixelformat check Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 15/33] rcar-vin: break out format alignment and checking Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 16/33] rcar-vin: simplify how formats are set and reset Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 17/33] rcar-vin: cache video standard Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 18/33] rcar-vin: move media bus configuration to struct rvin_dev Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 19/33] rcar-vin: enable Gen3 hardware configuration Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 20/33] rcar-vin: add function to manipulate Gen3 chsel value Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 21/33] rcar-vin: add flag to switch to media controller mode Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 22/33] rcar-vin: use different v4l2 operations in " Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 23/33] rcar-vin: force default colorspace for media centric mode Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 24/33] rcar-vin: prepare for media controller mode initialization Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 25/33] rcar-vin: add group allocator functions Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 26/33] rcar-vin: change name of video device Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 27/33] rcar-vin: add chsel information to rvin_info Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 28/33] rcar-vin: parse Gen3 OF and setup media graph Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 29/33] rcar-vin: add link notify for Gen3 Niklas Söderlund
2019-04-05 14:17   ` [PATCH v14,29/33] " Eugeniu Rosca
2019-04-05 14:34     ` Niklas Söderlund
2019-04-05 14:45       ` Eugeniu Rosca
2018-04-14 11:57 ` [PATCH v14 30/33] rcar-vin: extend {start,stop}_streaming to work with media controller Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 31/33] rcar-vin: enable support for r8a7795 Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 32/33] rcar-vin: enable support for r8a7796 Niklas Söderlund
2018-04-14 11:57 ` [PATCH v14 33/33] rcar-vin: enable support for r8a77970 Niklas Söderlund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180414115726.5075-8-niklas.soderlund+renesas@ragnatech.se \
    --to=niklas.soderlund+renesas@ragnatech.se \
    --cc=hverkuil@xs4all.nl \
    --cc=kieran.bingham@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.