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>
This commit is contained in:
parent
d5b6dcc459
commit
481d342e35
|
@ -123,6 +123,7 @@ static int rcar_du_load(struct drm_device *dev, unsigned long flags)
|
||||||
|
|
||||||
rcdu->dev = &pdev->dev;
|
rcdu->dev = &pdev->dev;
|
||||||
rcdu->pdata = pdata;
|
rcdu->pdata = pdata;
|
||||||
|
rcdu->info = (struct rcar_du_device_info *)pdev->id_entry->driver_data;
|
||||||
rcdu->ddev = dev;
|
rcdu->ddev = dev;
|
||||||
dev->dev_private = rcdu;
|
dev->dev_private = rcdu;
|
||||||
|
|
||||||
|
@ -297,6 +298,17 @@ static int rcar_du_remove(struct platform_device *pdev)
|
||||||
return 0;
|
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 = {
|
static struct platform_driver rcar_du_platform_driver = {
|
||||||
.probe = rcar_du_probe,
|
.probe = rcar_du_probe,
|
||||||
.remove = rcar_du_remove,
|
.remove = rcar_du_remove,
|
||||||
|
@ -305,6 +317,7 @@ static struct platform_driver rcar_du_platform_driver = {
|
||||||
.name = "rcar-du",
|
.name = "rcar-du",
|
||||||
.pm = &rcar_du_pm_ops,
|
.pm = &rcar_du_pm_ops,
|
||||||
},
|
},
|
||||||
|
.id_table = rcar_du_id_table,
|
||||||
};
|
};
|
||||||
|
|
||||||
module_platform_driver(rcar_du_platform_driver);
|
module_platform_driver(rcar_du_platform_driver);
|
||||||
|
|
|
@ -25,9 +25,18 @@ struct clk;
|
||||||
struct device;
|
struct device;
|
||||||
struct drm_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 rcar_du_device {
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
const struct rcar_du_platform_data *pdata;
|
const struct rcar_du_platform_data *pdata;
|
||||||
|
const struct rcar_du_device_info *info;
|
||||||
|
|
||||||
void __iomem *mmio;
|
void __iomem *mmio;
|
||||||
struct clk *clock;
|
struct clk *clock;
|
||||||
|
@ -50,6 +59,12 @@ struct rcar_du_device {
|
||||||
} planes;
|
} 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);
|
int rcar_du_get(struct rcar_du_device *rcdu);
|
||||||
void rcar_du_put(struct rcar_du_device *rcdu);
|
void rcar_du_put(struct rcar_du_device *rcdu);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue