| From f6b84c4397f9085d223d70b06cdbe8f8d2737b78 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Fri, 14 Jun 2013 13:38:33 +0200 |
| Subject: 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: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| (cherry picked from commit 481d342e3500e71a88cac79a6fab7b62f7203c7c) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/gpu/drm/rcar-du/rcar_du_drv.c | 13 +++++++++++++ |
| drivers/gpu/drm/rcar-du/rcar_du_drv.h | 15 +++++++++++++++ |
| 2 files changed, 28 insertions(+) |
| |
| diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c |
| index 910c1e179036..60836b8d6053 100644 |
| --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c |
| +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c |
| @@ -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; |
| |
| @@ -292,6 +293,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, |
| @@ -300,6 +312,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); |
| diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.h b/drivers/gpu/drm/rcar-du/rcar_du_drv.h |
| index 193cc59d495c..06dbf4ff139c 100644 |
| --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.h |
| +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.h |
| @@ -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); |
| |
| -- |
| 1.8.5.rc3 |
| |