From patchwork Thu Aug 5 15:36:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guillaume Tucker X-Patchwork-Id: 492268 Delivered-To: patch@linaro.org Received: by 2002:a05:6638:396:0:0:0:0 with SMTP id y22csp405009jap; Thu, 5 Aug 2021 08:36:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJybFEKZUtsaKIAjVXlzPnYcWwhn3xLvlkdRVUkMKUE5pGHYZCkbwDzO/FqJeW8C2xyPRH4l X-Received: by 2002:a02:a40f:: with SMTP id c15mr5410014jal.38.1628177806458; Thu, 05 Aug 2021 08:36:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628177806; cv=none; d=google.com; s=arc-20160816; b=0xdhUEbpyRtLic14hcSbNG6ZeUu/1rv+NU1lmw0kMdOZJK19GzVWdRhRdtyQNwwjEB QhCx0UCweB4yeEZYVXUaAZQwuh7ox5KZkAETp8op4aIcb47XfIdnyr6Dka0vy+FMTR/6 Oh+jS+26U42OG2difnAptEp5twPQZeH2lWl/N+YWke5kxCPnXxYzMLu5D6D1/U79Z4pI Tt4TTkoLBJP4l0PTO/O0H93XZgFTCn9ybyopqtk4dOyt5d9QJ4ykH1xI5wDcWWTQkQ57 YjyEPHtZEarE0S6w396Ihxj+FHpyb+doXEK8yVM0G8Ezquq5IFyW7jo8iVe0229r+bQw VXgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=qT0RmsliBZXPFpgIysqOUscYfUxLpc59YdNZrydO+/c=; b=qt5uALdBeq35pnpu3CftfQNkeBPMGNLDTqonT91nYupHBf6Rii+Hq/5Pm+DYszjKLi I1MoLgnkw1jLjx9eqNJHNpF7LSNasYURUt/9sMYS0QuZ/+sO2h4y4W9nrnRKi2OXmTAj zN9qB0+3f/pgBbbNxpYsI+PsB7LLXE2YZKIWyzUhduLNv7Sv1D84SWGrh/kBiap0Hz1+ ncGn6jutxPRPr6Y7eEZT3wUsqc8+R26qFhkvY9MS3YC/3nBiC/k3jk6ZCsGASQ9IUak1 J1bruOPyGfrCw344hjt/txmoc1Xku5xIZjckx5vOWYs4dpKskWeAcDZ5c4qDagGuZYoA mKLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-media-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-media-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x12si6101024ilm.5.2021.08.05.08.36.46; Thu, 05 Aug 2021 08:36:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-media-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-media-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-media-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240747AbhHEPgy (ORCPT + 4 others); Thu, 5 Aug 2021 11:36:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232057AbhHEPgx (ORCPT ); Thu, 5 Aug 2021 11:36:53 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 93804C061765; Thu, 5 Aug 2021 08:36:39 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: gtucker) with ESMTPSA id 93F451F40AC3 From: Guillaume Tucker To: Hans Verkuil , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@collabora.com Subject: [PATCH v2] media: vivid: drop CONFIG_FB dependency Date: Thu, 5 Aug 2021 16:36:31 +0100 Message-Id: <8615e9e583173652894889afd492022683389621.1628177586.git.guillaume.tucker@collabora.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org Drop the vivid dependency on CONFIG_FB by compiling out parts of the code that make use of the framebuffer API when not enabled. This is particularly useful as CONFIG_FB is not selected any more by DRM_FBDEV_EMULATION. Suggested-by: Hans Verkuil Signed-off-by: Guillaume Tucker --- Notes: Changes in v2: * fix Makefile conditional for when CONFIG_FB=m * compile-out bit 16 (framebuffer) when no CONFIG_FB drivers/media/test-drivers/vivid/Kconfig | 5 +---- drivers/media/test-drivers/vivid/Makefile | 5 ++++- drivers/media/test-drivers/vivid/vivid-core.c | 9 +++++++++ drivers/media/test-drivers/vivid/vivid-ctrls.c | 4 ++++ 4 files changed, 18 insertions(+), 5 deletions(-) -- 2.20.1 diff --git a/drivers/media/test-drivers/vivid/Kconfig b/drivers/media/test-drivers/vivid/Kconfig index c3abde2986b2..06ad350f1903 100644 --- a/drivers/media/test-drivers/vivid/Kconfig +++ b/drivers/media/test-drivers/vivid/Kconfig @@ -1,13 +1,10 @@ # SPDX-License-Identifier: GPL-2.0-only config VIDEO_VIVID tristate "Virtual Video Test Driver" - depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64 && FB + depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64 depends on HAS_DMA select FONT_SUPPORT select FONT_8x16 - select FB_CFB_FILLRECT - select FB_CFB_COPYAREA - select FB_CFB_IMAGEBLIT select VIDEOBUF2_VMALLOC select VIDEOBUF2_DMA_CONTIG select VIDEO_V4L2_TPG diff --git a/drivers/media/test-drivers/vivid/Makefile b/drivers/media/test-drivers/vivid/Makefile index b12ad0152a3e..2ad634da7f88 100644 --- a/drivers/media/test-drivers/vivid/Makefile +++ b/drivers/media/test-drivers/vivid/Makefile @@ -3,10 +3,13 @@ vivid-objs := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o \ vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o \ vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \ vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o \ - vivid-osd.o vivid-meta-cap.o vivid-meta-out.o \ + vivid-meta-cap.o vivid-meta-out.o \ vivid-kthread-touch.o vivid-touch-cap.o ifeq ($(CONFIG_VIDEO_VIVID_CEC),y) vivid-objs += vivid-cec.o endif +ifneq ($(CONFIG_FB),) + vivid-objs += vivid-osd.o +endif obj-$(CONFIG_VIDEO_VIVID) += vivid.o diff --git a/drivers/media/test-drivers/vivid/vivid-core.c b/drivers/media/test-drivers/vivid/vivid-core.c index d2bd2653cf54..7675962b9e93 100644 --- a/drivers/media/test-drivers/vivid/vivid-core.c +++ b/drivers/media/test-drivers/vivid/vivid-core.c @@ -126,7 +126,9 @@ MODULE_PARM_DESC(node_types, " node types, default is 0xe1d3d. Bitmask with the "\t\t bit 8: Video Output node\n" "\t\t bit 10-11: VBI Output node: 0 = none, 1 = raw vbi, 2 = sliced vbi, 3 = both\n" "\t\t bit 12: Radio Transmitter node\n" +#if IS_ENABLED(CONFIG_FB) "\t\t bit 16: Framebuffer for testing overlays\n" +#endif "\t\t bit 17: Metadata Capture node\n" "\t\t bit 18: Metadata Output node\n" "\t\t bit 19: Touch Capture node\n"); @@ -1021,9 +1023,11 @@ static int vivid_detect_feature_set(struct vivid_dev *dev, int inst, /* do we have a modulator? */ *has_modulator = dev->has_radio_tx; +#if IS_ENABLED(CONFIG_FB) if (dev->has_vid_cap) /* do we have a framebuffer for overlay testing? */ dev->has_fb = node_type & 0x10000; +#endif /* can we do crop/compose/scaling while capturing? */ if (no_error_inj && *ccs_cap == -1) @@ -1355,6 +1359,7 @@ static int vivid_create_queues(struct vivid_dev *dev) return ret; } +#if IS_ENABLED(CONFIG_FB) if (dev->has_fb) { /* Create framebuffer for testing capture/output overlay */ ret = vivid_fb_init(dev); @@ -1363,6 +1368,8 @@ static int vivid_create_queues(struct vivid_dev *dev) v4l2_info(&dev->v4l2_dev, "Framebuffer device registered as fb%d\n", dev->fb_info.node); } +#endif + return 0; } @@ -2069,12 +2076,14 @@ static int vivid_remove(struct platform_device *pdev) video_device_node_name(&dev->radio_tx_dev)); video_unregister_device(&dev->radio_tx_dev); } +#if IS_ENABLED(CONFIG_FB) if (dev->has_fb) { v4l2_info(&dev->v4l2_dev, "unregistering fb%d\n", dev->fb_info.node); unregister_framebuffer(&dev->fb_info); vivid_fb_release_buffers(dev); } +#endif if (dev->has_meta_cap) { v4l2_info(&dev->v4l2_dev, "unregistering %s\n", video_device_node_name(&dev->meta_cap_dev)); diff --git a/drivers/media/test-drivers/vivid/vivid-ctrls.c b/drivers/media/test-drivers/vivid/vivid-ctrls.c index 8dc50fe22972..081470a1d88a 100644 --- a/drivers/media/test-drivers/vivid/vivid-ctrls.c +++ b/drivers/media/test-drivers/vivid/vivid-ctrls.c @@ -305,6 +305,7 @@ static const struct v4l2_ctrl_config vivid_ctrl_ro_int32 = { /* Framebuffer Controls */ +#if IS_ENABLED(CONFIG_FB) static int vivid_fb_s_ctrl(struct v4l2_ctrl *ctrl) { struct vivid_dev *dev = container_of(ctrl->handler, @@ -328,6 +329,7 @@ static const struct v4l2_ctrl_config vivid_ctrl_clear_fb = { .name = "Clear Framebuffer", .type = V4L2_CTRL_TYPE_BUTTON, }; +#endif /* IS_ENABLED(CONFIG_FB) */ /* Video User Controls */ @@ -1761,8 +1763,10 @@ int vivid_create_controls(struct vivid_dev *dev, bool show_ccs_cap, (dev->has_vbi_cap && dev->has_vbi_out)) v4l2_ctrl_new_custom(hdl_loop_cap, &vivid_ctrl_loop_video, NULL); +#if IS_ENABLED(CONFIG_FB) if (dev->has_fb) v4l2_ctrl_new_custom(hdl_fb, &vivid_ctrl_clear_fb, NULL); +#endif if (dev->has_radio_rx) { v4l2_ctrl_new_custom(hdl_radio_rx, &vivid_ctrl_radio_hw_seek_mode, NULL);