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

Commit 481d342e authored by Laurent Pinchart's avatar Laurent Pinchart
Browse files

drm/rcar-du: Add platform module device table



The platform device id driver data field points to a device information
structure that only contains a (currently empty) features field for now.
Support for additional model-dependent features will be added later.

Only the R8A7779 variant is currently supported.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
parent d5b6dcc4
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -123,6 +123,7 @@ static int rcar_du_load(struct drm_device *dev, unsigned long flags)

	rcdu->dev = &pdev->dev;
	rcdu->pdata = pdata;
	rcdu->info = (struct rcar_du_device_info *)pdev->id_entry->driver_data;
	rcdu->ddev = dev;
	dev->dev_private = rcdu;

@@ -297,6 +298,17 @@ static int rcar_du_remove(struct platform_device *pdev)
	return 0;
}

static const struct rcar_du_device_info rcar_du_r8a7779_info = {
	.features = 0,
};

static const struct platform_device_id rcar_du_id_table[] = {
	{ "rcar-du-r8a7779", (kernel_ulong_t)&rcar_du_r8a7779_info },
	{ }
};

MODULE_DEVICE_TABLE(platform, rcar_du_id_table);

static struct platform_driver rcar_du_platform_driver = {
	.probe		= rcar_du_probe,
	.remove		= rcar_du_remove,
@@ -305,6 +317,7 @@ static struct platform_driver rcar_du_platform_driver = {
		.name	= "rcar-du",
		.pm	= &rcar_du_pm_ops,
	},
	.id_table	= rcar_du_id_table,
};

module_platform_driver(rcar_du_platform_driver);
+15 −0
Original line number Diff line number Diff line
@@ -25,9 +25,18 @@ struct clk;
struct device;
struct drm_device;

/*
 * struct rcar_du_device_info - DU model-specific information
 * @features: device features (RCAR_DU_FEATURE_*)
 */
struct rcar_du_device_info {
	unsigned int features;
};

struct rcar_du_device {
	struct device *dev;
	const struct rcar_du_platform_data *pdata;
	const struct rcar_du_device_info *info;

	void __iomem *mmio;
	struct clk *clock;
@@ -50,6 +59,12 @@ struct rcar_du_device {
	} planes;
};

static inline bool rcar_du_has(struct rcar_du_device *rcdu,
			       unsigned int feature)
{
	return rcdu->info->features & feature;
}

int rcar_du_get(struct rcar_du_device *rcdu);
void rcar_du_put(struct rcar_du_device *rcdu);