@@ -20,6 +20,9 @@ Optional properties:
- renesas,#uds: Number of Up Down Scaler (UDS) modules in the VSP1. Defaults
to 0 if not present.
+ - renesas,has-bru: Boolean, indicates that the Blending & ROP Unit (BRU)
+ module is available. Defaults to true on R-Car Gen2 and false on R-Car Gen3
+ if not present.
- renesas,has-lif: Boolean, indicates that the LCD Interface (LIF) module is
available.
- renesas,has-lut: Boolean, indicates that the Look Up Table (LUT) module is
@@ -42,6 +42,7 @@ struct vsp1_uds;
#define VSP1_HAS_LIF (1 << 0)
#define VSP1_HAS_LUT (1 << 1)
#define VSP1_HAS_SRU (1 << 2)
+#define VSP1_HAS_BRU (1 << 3)
struct vsp1_platform_data {
unsigned int features;
@@ -223,13 +223,15 @@ static int vsp1_create_entities(struct vsp1_device *vsp1)
}
/* Instantiate all the entities. */
- vsp1->bru = vsp1_bru_create(vsp1);
- if (IS_ERR(vsp1->bru)) {
- ret = PTR_ERR(vsp1->bru);
- goto done;
- }
+ if (vsp1->pdata.features & VSP1_HAS_BRU) {
+ vsp1->bru = vsp1_bru_create(vsp1);
+ if (IS_ERR(vsp1->bru)) {
+ ret = PTR_ERR(vsp1->bru);
+ goto done;
+ }
- list_add_tail(&vsp1->bru->entity.list_dev, &vsp1->entities);
+ list_add_tail(&vsp1->bru->entity.list_dev, &vsp1->entities);
+ }
vsp1->hsi = vsp1_hsit_create(vsp1, true);
if (IS_ERR(vsp1->hsi)) {
@@ -513,6 +515,8 @@ static int vsp1_parse_dt(struct vsp1_device *vsp1)
vsp1->info = of_device_get_match_data(vsp1->dev);
+ if (of_property_read_bool(np, "renesas,has-bru"))
+ pdata->features |= VSP1_HAS_BRU;
if (of_property_read_bool(np, "renesas,has-lif"))
pdata->features |= VSP1_HAS_LIF;
if (of_property_read_bool(np, "renesas,has-lut"))
@@ -542,6 +546,13 @@ static int vsp1_parse_dt(struct vsp1_device *vsp1)
return -EINVAL;
}
+ /* Backward compatibility: all Gen2 VSP instances have a BRU, the
+ * renesas,has-bru property was thus not available. Set the HAS_BRU
+ * feature automatically in that case.
+ */
+ if (vsp1->info->num_bru_inputs == 4)
+ pdata->features |= VSP1_HAS_BRU;
+
return 0;
}
Not all VSP instances have a BRU on R-Car Gen3, make it optional. For backward compatibility with older DT bindings default to BRU availability on R-Car Gen2. Cc: devicetree@vger.kernel.org Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> --- .../devicetree/bindings/media/renesas,vsp1.txt | 3 +++ drivers/media/platform/vsp1/vsp1.h | 1 + drivers/media/platform/vsp1/vsp1_drv.c | 23 ++++++++++++++++------ 3 files changed, 21 insertions(+), 6 deletions(-)