|
@@ -88,14 +88,35 @@ static void lif_configure_stream(struct vsp1_entity *entity,
|
|
|
{
|
|
|
const struct v4l2_mbus_framefmt *format;
|
|
|
struct vsp1_lif *lif = to_lif(&entity->subdev);
|
|
|
- unsigned int hbth = 1300;
|
|
|
- unsigned int obth = 400;
|
|
|
- unsigned int lbth = 200;
|
|
|
+ unsigned int hbth;
|
|
|
+ unsigned int obth;
|
|
|
+ unsigned int lbth;
|
|
|
|
|
|
format = vsp1_entity_get_pad_format(&lif->entity, lif->entity.config,
|
|
|
LIF_PAD_SOURCE);
|
|
|
|
|
|
- obth = min(obth, (format->width + 1) / 2 * format->height - 4);
|
|
|
+ switch (entity->vsp1->version & VI6_IP_VERSION_SOC_MASK) {
|
|
|
+ case VI6_IP_VERSION_MODEL_VSPD_GEN2:
|
|
|
+ case VI6_IP_VERSION_MODEL_VSPD_V2H:
|
|
|
+ hbth = 1536;
|
|
|
+ obth = min(128U, (format->width + 1) / 2 * format->height - 4);
|
|
|
+ lbth = 1520;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case VI6_IP_VERSION_MODEL_VSPDL_GEN3:
|
|
|
+ case VI6_IP_VERSION_MODEL_VSPD_V3:
|
|
|
+ hbth = 0;
|
|
|
+ obth = 1500;
|
|
|
+ lbth = 0;
|
|
|
+ break;
|
|
|
+
|
|
|
+ case VI6_IP_VERSION_MODEL_VSPD_GEN3:
|
|
|
+ default:
|
|
|
+ hbth = 0;
|
|
|
+ obth = 3000;
|
|
|
+ lbth = 0;
|
|
|
+ break;
|
|
|
+ }
|
|
|
|
|
|
vsp1_lif_write(lif, dlb, VI6_LIF_CSBTH,
|
|
|
(hbth << VI6_LIF_CSBTH_HBTH_SHIFT) |
|