diff options
Diffstat (limited to 'drivers/media/platform/davinci/vpbe_display.c')
-rw-r--r-- | drivers/media/platform/davinci/vpbe_display.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/media/platform/davinci/vpbe_display.c b/drivers/media/platform/davinci/vpbe_display.c index 1802f11e939f..d0b375cf565f 100644 --- a/drivers/media/platform/davinci/vpbe_display.c +++ b/drivers/media/platform/davinci/vpbe_display.c | |||
@@ -916,6 +916,21 @@ static int vpbe_display_s_fmt(struct file *file, void *priv, | |||
916 | other video window */ | 916 | other video window */ |
917 | 917 | ||
918 | layer->pix_fmt = *pixfmt; | 918 | layer->pix_fmt = *pixfmt; |
919 | if (pixfmt->pixelformat == V4L2_PIX_FMT_NV12) { | ||
920 | struct vpbe_layer *otherlayer; | ||
921 | |||
922 | otherlayer = _vpbe_display_get_other_win_layer(disp_dev, layer); | ||
923 | /* if other layer is available, only | ||
924 | * claim it, do not configure it | ||
925 | */ | ||
926 | ret = osd_device->ops.request_layer(osd_device, | ||
927 | otherlayer->layer_info.id); | ||
928 | if (ret < 0) { | ||
929 | v4l2_err(&vpbe_dev->v4l2_dev, | ||
930 | "Display Manager failed to allocate layer\n"); | ||
931 | return -EBUSY; | ||
932 | } | ||
933 | } | ||
919 | 934 | ||
920 | /* Get osd layer config */ | 935 | /* Get osd layer config */ |
921 | osd_device->ops.get_layer_config(osd_device, | 936 | osd_device->ops.get_layer_config(osd_device, |