From nobody Sun Sep 22 03:33:44 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AAEBBC433EF for ; Mon, 2 May 2022 08:49:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1383916AbiEBIwy (ORCPT ); Mon, 2 May 2022 04:52:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383868AbiEBIwm (ORCPT ); Mon, 2 May 2022 04:52:42 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id A26B3522E0 for ; Mon, 2 May 2022 01:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651481351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=nUb3Cdutv1MKxDV6ingzdmF5ZaYeX01o1Hla2Evf+TU=; b=CNfxZZGAxdtvqisxQw5GNnTcUT2KpMoaAmUCEHFDAtFP6gcXUX3i0WZahOKDz4XG22EbO3 5w2vFQglca1EECIL03hyjO1J96CYhZhKobnW5ccC3fZOVt337ahzS1hUMoLKnW9BUccQ78 N7F18Nr4M28r52eOthnDgruTvr7oKPw= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-46-TVvo94TxNE2EnYgXswS95Q-1; Mon, 02 May 2022 04:49:03 -0400 X-MC-Unique: TVvo94TxNE2EnYgXswS95Q-1 Received: by mail-wm1-f70.google.com with SMTP id d6-20020a05600c34c600b0039296a2ac7cso4313122wmq.1 for ; Mon, 02 May 2022 01:49:03 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nUb3Cdutv1MKxDV6ingzdmF5ZaYeX01o1Hla2Evf+TU=; b=ViHZBaGbjcQ6m87k+eaLZLMZKf5lyA6FNV7It122QTGGnjPwTfjS8Ki+eUTrjYIeoe 35WoEs+79nCO21HSCl81aCFuH+zfDw4MrUBkB6EiiyFFyM3sM0jfUDo8STepiGTZsEdL vCbi0pLhm0vngBHUWS/1/253fdoMNJVJdCAl7wOnI1lXDb0l67M0wet45Hlmtn/qJGHa /4MgoR5iu6Mv29cThaRHe4riF+oGukzXH5omrtHaD1JmeygPTzFskABbBmcTjaflaaLI 7YndTUlQKuuWBnoVOBiSA+YHM24nHk9Bzy4qx3a/01VNHwiPp7kX3GMv01Qxxv58HIw2 PG+w== X-Gm-Message-State: AOAM532w8fnJo1E9eX7A3Zp64i+UBxAdpCmrSffyNKhAkjvBcWEHWurm 5tL2fhvIRqYVdGZBHwLa+3Tacd7RDJlCE0TV7I/xVhAY878Ywq82KK3Yy6Zf01UcraJourZGZnK /6+2x8revSOaKbNAvwklAAkOj8eLU0iRsJlTbeHotPlMZftHmVHSBaNe0PhlBRhmP+3ope40UpN o= X-Received: by 2002:adf:f481:0:b0:205:b814:887b with SMTP id l1-20020adff481000000b00205b814887bmr8534248wro.472.1651481341995; Mon, 02 May 2022 01:49:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAXHYxvLbyws8GB/tbUJd38HBu5iob+xH8VrObZKgF2/b4LPU+2ChH0C1K1Jw1h4dwPv9ZCA== X-Received: by 2002:adf:f481:0:b0:205:b814:887b with SMTP id l1-20020adff481000000b00205b814887bmr8534221wro.472.1651481341758; Mon, 02 May 2022 01:49:01 -0700 (PDT) Received: from minerva.. ([90.167.94.74]) by smtp.gmail.com with ESMTPSA id i14-20020adfa50e000000b0020c5253d8c6sm8032307wrb.18.2022.05.02.01.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 01:49:01 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Javier Martinez Canillas , Chen Feng , Chen-Yu Tsai , Daniel Vetter , Dave Airlie , David Airlie , Gerd Hoffmann , John Stultz , Lucas De Marchi , Nirmoy Das , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Tian Tao , Xinliang Liu , Xinwei Kong , dri-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org Subject: [PATCH 1/3] drm: Remove superfluous arg when calling to drm_fbdev_generic_setup() Date: Mon, 2 May 2022 10:48:28 +0200 Message-Id: <20220502084830.285639-2-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220502084830.285639-1-javierm@redhat.com> References: <20220502084830.285639-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The drm_fbdev_generic_setup() function already sets the preferred bits per pixel for the device to dev->mode_config.preferred_depth, if preferred_bpp value is zero. Passing the same value to the function is unnecessary. Let's cleanup that in the two drivers that do it. Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 2 +- drivers/gpu/drm/tiny/cirrus.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c b/drivers/gpu/= drm/hisilicon/hibmc/hibmc_drm_drv.c index fe4269c5aa0a..ace92459e462 100644 --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c @@ -349,7 +349,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev, goto err_unload; } =20 - drm_fbdev_generic_setup(dev, dev->mode_config.preferred_depth); + drm_fbdev_generic_setup(dev, 0); =20 return 0; =20 diff --git a/drivers/gpu/drm/tiny/cirrus.c b/drivers/gpu/drm/tiny/cirrus.c index c8e791840862..ed5a2e14894a 100644 --- a/drivers/gpu/drm/tiny/cirrus.c +++ b/drivers/gpu/drm/tiny/cirrus.c @@ -601,7 +601,7 @@ static int cirrus_pci_probe(struct pci_dev *pdev, if (ret) return ret; =20 - drm_fbdev_generic_setup(dev, dev->mode_config.preferred_depth); + drm_fbdev_generic_setup(dev, 0); return 0; } =20 --=20 2.35.1 From nobody Sun Sep 22 03:33:44 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32D64C4332F for ; Mon, 2 May 2022 08:49:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1383875AbiEBIww (ORCPT ); Mon, 2 May 2022 04:52:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55962 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383852AbiEBIwl (ORCPT ); Mon, 2 May 2022 04:52:41 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3FCDB522D1 for ; Mon, 2 May 2022 01:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651481351; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zqT+Zv/sTFZb4ORqIiaxu9+mW23ZhJ+5Iqax9Traq1U=; b=MwjYcDyHl3P+azAVOF9Er7+96wPkDSGIwso6F7d10hKr1RvIk8YdavPp0apdAXtswMCm/p DT6/EpUpTqCDVyifJF23dVlBv9HL4l0EatFDjFG2K92X/wm/8tzDauRa7k0uxwJFaWqHI/ fVqh4eiD+A+bL2YReyG+BBHQyHW9h6M= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-192-t7Pz5KB2M9WWb1FQpudLJQ-1; Mon, 02 May 2022 04:49:10 -0400 X-MC-Unique: t7Pz5KB2M9WWb1FQpudLJQ-1 Received: by mail-wm1-f71.google.com with SMTP id p32-20020a05600c1da000b00393fbf9ab6eso8743408wms.4 for ; Mon, 02 May 2022 01:49:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zqT+Zv/sTFZb4ORqIiaxu9+mW23ZhJ+5Iqax9Traq1U=; b=i6PYrntXW9dCWADpkeyGthMns+oCeh1hOFS8soLAGwjVUZY26zHBglVvFLk5jmI4mM tZzBJ/HNEXGe2TLEejqPDvlZkeqc60yTIoxOWm+AJZKi4PZl5T6KfYyUALBOfFgrz5x+ szqvepuG3uBDNvEeb8c9+/kKK5E8HTRn1x6gGpDHijY6C2Tzjb9hxG32y6v/4ISdP4YG a2jNIWsKXQDu6HfAcIDjUMdmxMTifFxqpykMfxpSsuJ73s3IiE70/vlr6Eh6RHpyNIfx wcgW6hsRmszyGUKP/x6bUSgR3SJ1DeC0pWXGXo1vloYjEDUQZuMCMghHJOzIp19Vg6v7 Nzuw== X-Gm-Message-State: AOAM530KWDOz4N9zJacA2sdaxpI49oGwnhrmn+C31THYXpqSn8iQ+M6Q 1OgjzasSlrgZdk2mqd8oiXqZknQoRpXLKNHq5wCI3hw1mCWoxZLowj80wuyF9Jx/3y9KkIfAy7l wI/JFzfcBiQyNeF8ItNQyCkdIQEBHgqaoVUZqW6XKPYHY1LmqWWFhN+fZTZiNifr/+fivd6shFQ 8= X-Received: by 2002:a5d:4989:0:b0:20a:c907:2110 with SMTP id r9-20020a5d4989000000b0020ac9072110mr8621542wrq.476.1651481348801; Mon, 02 May 2022 01:49:08 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5KEpKOF5xwqEHsDpgLM4OfRzNuQQfMdJfkLawAy7fhmgXpJxlDccWOfuSvNh7jIPl0aT+4A== X-Received: by 2002:a5d:4989:0:b0:20a:c907:2110 with SMTP id r9-20020a5d4989000000b0020ac9072110mr8621438wrq.476.1651481348343; Mon, 02 May 2022 01:49:08 -0700 (PDT) Received: from minerva.. ([90.167.94.74]) by smtp.gmail.com with ESMTPSA id i14-20020adfa50e000000b0020c5253d8c6sm8032307wrb.18.2022.05.02.01.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 01:49:08 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: Thomas Zimmermann , Javier Martinez Canillas , Alain Volmat , Alex Deucher , Alexandre Belloni , Alexandre Torgue , Alexey Brodkin , Alison Wang , Andrew Jeffery , Andrey Grodzovsky , Boris Brezillon , Brian Starkey , Chen Feng , Chen-Yu Tsai , Chia-I Wu , =?UTF-8?q?Christian=20K=C3=B6nig?= , Chun-Kuang Hu , Claudiu Beznea , Daniel Vetter , Dave Airlie , David Airlie , Emma Anholt , Evan Quan , Fabio Estevam , Gerd Hoffmann , Greg Kroah-Hartman , Gurchetan Singh , Hans de Goede , Hao Fang , Hyun Kwon , Jernej Skrabec , Jerome Brunet , Joel Stanley , John Stultz , Jyri Sarha , Kevin Hilman , Kieran Bingham , Laurent Pinchart , Laurentiu Palcu , Linus Walleij , Liviu Dudau , Lucas Stach , Maarten Lankhorst , Marek Vasut , Mario Limonciello , Martin Blumenstingl , Matthias Brugger , Maxime Coquelin , Maxime Ripard , Michal Simek , NXP Linux Team , Neil Armstrong , Nicolas Ferre , "Pan, Xinhui" , Paul Cercueil , Pengutronix Kernel Team , Philipp Zabel , Philippe Cornu , Raphael Gallais-Pou , Sam Ravnborg , Samuel Holland , Sascha Hauer , Shawn Guo , Solomon Chiu , Stefan Agner , Tian Tao , Tomi Valkeinen , Xinliang Liu , Xinwei Kong , Yannick Fertre , Yong Wu , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-mediatek@lists.infradead.org, linux-mips@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-sunxi@lists.linux.dev, spice-devel@lists.freedesktop.org, virtualization@lists.linux-foundation.org Subject: [PATCH 2/3] drm/fb-helper: Rename preferred_bpp drm_fbdev_generic_setup() parameter Date: Mon, 2 May 2022 10:48:29 +0200 Message-Id: <20220502084830.285639-3-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220502084830.285639-1-javierm@redhat.com> References: <20220502084830.285639-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" By default the bits per pixel for the emulated framebuffer device is set to dev->mode_config.preferred_depth, but some devices need another value. Since this second parameter is only used by a few drivers, and to allow drivers to use it for passing other configurations when registering the fbdev, rename @preferred_bpp to @options and make it a multi-field param. The DRM_FB_SET_OPTION() and DRM_FB_GET_OPTION() macros are provided for drivers to set and get an option respectively. For now, only DRM_FB_BPP option exists but other options would be added later. Suggested-by: Thomas Zimmermann Signed-off-by: Javier Martinez Canillas Reviewed-by: Laurent Pinchart Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 6 ++++-- drivers/gpu/drm/arm/hdlcd_drv.c | 2 +- drivers/gpu/drm/arm/malidp_drv.c | 2 +- drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +- drivers/gpu/drm/ast/ast_drv.c | 2 +- drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c | 2 +- drivers/gpu/drm/drm_drv.c | 2 +- drivers/gpu/drm/drm_fb_helper.c | 16 ++++++++++++---- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 2 +- drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c | 2 +- drivers/gpu/drm/imx/dcss/dcss-kms.c | 2 +- drivers/gpu/drm/imx/imx-drm-core.c | 2 +- drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 2 +- drivers/gpu/drm/mcde/mcde_drv.c | 2 +- drivers/gpu/drm/mediatek/mtk_drm_drv.c | 2 +- drivers/gpu/drm/meson/meson_drv.c | 2 +- drivers/gpu/drm/mxsfb/mxsfb_drv.c | 2 +- drivers/gpu/drm/pl111/pl111_drv.c | 2 +- drivers/gpu/drm/qxl/qxl_drv.c | 2 +- drivers/gpu/drm/rcar-du/rcar_du_drv.c | 2 +- drivers/gpu/drm/sti/sti_drv.c | 2 +- drivers/gpu/drm/stm/drv.c | 2 +- drivers/gpu/drm/sun4i/sun4i_drv.c | 2 +- drivers/gpu/drm/tidss/tidss_drv.c | 2 +- drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- drivers/gpu/drm/tiny/arcpgu.c | 2 +- drivers/gpu/drm/tiny/bochs.c | 2 +- drivers/gpu/drm/tve200/tve200_drv.c | 2 +- drivers/gpu/drm/vboxvideo/vbox_drv.c | 2 +- drivers/gpu/drm/vc4/vc4_drv.c | 2 +- drivers/gpu/drm/virtio/virtgpu_drv.c | 2 +- drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 2 +- include/drm/drm_fb_helper.h | 12 ++++++++++++ 33 files changed, 58 insertions(+), 36 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/= amdgpu/amdgpu_drv.c index b03663f42cc9..f5fae3838cdc 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -2118,9 +2118,11 @@ static int amdgpu_pci_probe(struct pci_dev *pdev, !list_empty(&adev_to_drm(adev)->mode_config.connector_list)) { /* select 8 bpp console on low vram cards */ if (adev->gmc.real_vram_size <=3D (32*1024*1024)) - drm_fbdev_generic_setup(adev_to_drm(adev), 8); + drm_fbdev_generic_setup(adev_to_drm(adev), + DRM_FB_SET_OPTION(DRM_FB_BPP, 8)); else - drm_fbdev_generic_setup(adev_to_drm(adev), 32); + drm_fbdev_generic_setup(adev_to_drm(adev), + DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); } =20 ret =3D amdgpu_debugfs_init(adev); diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_dr= v.c index e89ae0ec60eb..636b0e989398 100644 --- a/drivers/gpu/drm/arm/hdlcd_drv.c +++ b/drivers/gpu/drm/arm/hdlcd_drv.c @@ -321,7 +321,7 @@ static int hdlcd_drm_bind(struct device *dev) if (ret) goto err_register; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_= drv.c index d5aef21426cf..8f7c4f3136d5 100644 --- a/drivers/gpu/drm/arm/malidp_drv.c +++ b/drivers/gpu/drm/arm/malidp_drv.c @@ -863,7 +863,7 @@ static int malidp_bind(struct device *dev) if (ret) goto register_fail; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspe= ed/aspeed_gfx_drv.c index 7780b72de9e8..c16837fd1f8d 100644 --- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c +++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c @@ -343,7 +343,7 @@ static int aspeed_gfx_probe(struct platform_device *pde= v) if (ret) goto err_unload; =20 - drm_fbdev_generic_setup(&priv->drm, 32); + drm_fbdev_generic_setup(&priv->drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); return 0; =20 err_unload: diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c index 7465c4f0156a..813e9af00983 100644 --- a/drivers/gpu/drm/ast/ast_drv.c +++ b/drivers/gpu/drm/ast/ast_drv.c @@ -126,7 +126,7 @@ static int ast_pci_probe(struct pci_dev *pdev, const st= ruct pci_device_id *ent) if (ret) return ret; =20 - drm_fbdev_generic_setup(dev, 32); + drm_fbdev_generic_setup(dev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; } diff --git a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c b/drivers/gpu/drm= /atmel-hlcdc/atmel_hlcdc_dc.c index 651e3c109360..e18dcd16ff8a 100644 --- a/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +++ b/drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c @@ -760,7 +760,7 @@ static int atmel_hlcdc_dc_drm_probe(struct platform_dev= ice *pdev) if (ret) goto err_unload; =20 - drm_fbdev_generic_setup(ddev, 24); + drm_fbdev_generic_setup(ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 24)); =20 return 0; =20 diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c index 8214a0b1ab7f..6695937945a5 100644 --- a/drivers/gpu/drm/drm_drv.c +++ b/drivers/gpu/drm/drm_drv.c @@ -324,7 +324,7 @@ void drm_minor_release(struct drm_minor *minor) * if (ret) * return ret; * - * drm_fbdev_generic_setup(drm, 32); + * drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); * * return 0; * } diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helpe= r.c index d265a73313c9..f626947bb9b9 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -2501,8 +2501,16 @@ static const struct drm_client_funcs drm_fbdev_clien= t_funcs =3D { /** * drm_fbdev_generic_setup() - Setup generic fbdev emulation * @dev: DRM device - * @preferred_bpp: Preferred bits per pixel for the device. - * @dev->mode_config.preferred_depth is used if this is ze= ro. + * @options: options for the registered framebuffer. + * + * The @options parameter is a multi-field parameter that can contain + * different options for the emulated framebuffer device registered. + * + * The options must be set using DRM_FB_SET_OPTION() and obtained using + * DRM_FB_GET_OPTION(). The options field are the following: + * + * * DRM_FB_BPP: bits per pixel for the device. If the field is not set, + * @dev->mode_config.preferred_depth is used instead. * * This function sets up generic fbdev emulation for drivers that supports * dumb buffers with a virtual address and that can be mmap'ed. @@ -2525,10 +2533,10 @@ static const struct drm_client_funcs drm_fbdev_clie= nt_funcs =3D { * * The fbdev is destroyed by drm_dev_unregister(). */ -void drm_fbdev_generic_setup(struct drm_device *dev, - unsigned int preferred_bpp) +void drm_fbdev_generic_setup(struct drm_device *dev, unsigned int options) { struct drm_fb_helper *fb_helper; + unsigned int preferred_bpp =3D DRM_FB_GET_OPTION(DRM_FB_BPP, options); int ret; =20 drm_WARN(dev, !dev->registered, "Device has not been registered.\n"); diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fs= l-dcu/fsl_dcu_drm_drv.c index 7a503bf08d0f..7bd8129388f2 100644 --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c @@ -334,7 +334,7 @@ static int fsl_dcu_drm_probe(struct platform_device *pd= ev) if (ret < 0) goto put; =20 - drm_fbdev_generic_setup(drm, legacyfb_depth); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, legacyfb_depth= )); =20 return 0; =20 diff --git a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c b/drivers/gpu/= drm/hisilicon/kirin/kirin_drm_drv.c index 2af51df6dca7..90aa59b77d31 100644 --- a/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c +++ b/drivers/gpu/drm/hisilicon/kirin/kirin_drm_drv.c @@ -237,7 +237,7 @@ static int kirin_drm_bind(struct device *dev) if (ret) goto err_kms_cleanup; =20 - drm_fbdev_generic_setup(drm_dev, 32); + drm_fbdev_generic_setup(drm_dev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/imx/dcss/dcss-kms.c b/drivers/gpu/drm/imx/dcss= /dcss-kms.c index 9b84df34a6a1..a4736ae85881 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-kms.c +++ b/drivers/gpu/drm/imx/dcss/dcss-kms.c @@ -148,7 +148,7 @@ struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *d= css) if (ret) goto cleanup_crtc; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return kms; =20 diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-d= rm-core.c index a57812ec36b1..4151f9b1b645 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@ -251,7 +251,7 @@ static int imx_drm_bind(struct device *dev) if (ret) goto err_poll_fini; =20 - drm_fbdev_generic_setup(drm, legacyfb_depth); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, legacyfb_depth= )); =20 return 0; =20 diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/in= genic/ingenic-drm-drv.c index 8eb0ad501a7b..9726c901677c 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -1388,7 +1388,7 @@ static int ingenic_drm_bind(struct device *dev, bool = has_components) goto err_clk_notifier_unregister; } =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/mcde/mcde_drv.c b/drivers/gpu/drm/mcde/mcde_dr= v.c index e601baa87e55..1382a818c66b 100644 --- a/drivers/gpu/drm/mcde/mcde_drv.c +++ b/drivers/gpu/drm/mcde/mcde_drv.c @@ -238,7 +238,7 @@ static int mcde_drm_bind(struct device *dev) if (ret < 0) goto unbind; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/media= tek/mtk_drm_drv.c index 247c6ff277ef..146f3f064e3e 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -393,7 +393,7 @@ static int mtk_drm_bind(struct device *dev) if (ret < 0) goto err_deinit; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/meson/meson_drv.c b/drivers/gpu/drm/meson/meso= n_drv.c index 1b70938cfd2c..76463b940349 100644 --- a/drivers/gpu/drm/meson/meson_drv.c +++ b/drivers/gpu/drm/meson/meson_drv.c @@ -350,7 +350,7 @@ static int meson_drv_bind_master(struct device *dev, bo= ol has_components) if (ret) goto uninstall_irq; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/mxsfb/mxsfb_drv.c b/drivers/gpu/drm/mxsfb/mxsf= b_drv.c index 9d71c55a31c0..5e4c8e15eca7 100644 --- a/drivers/gpu/drm/mxsfb/mxsfb_drv.c +++ b/drivers/gpu/drm/mxsfb/mxsfb_drv.c @@ -357,7 +357,7 @@ static int mxsfb_probe(struct platform_device *pdev) if (ret) goto err_unload; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl11= 1_drv.c index 520301b405f1..b9d1762051c8 100644 --- a/drivers/gpu/drm/pl111/pl111_drv.c +++ b/drivers/gpu/drm/pl111/pl111_drv.c @@ -308,7 +308,7 @@ static int pl111_amba_probe(struct amba_device *amba_de= v, if (ret < 0) goto dev_put; =20 - drm_fbdev_generic_setup(drm, priv->variant->fb_bpp); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, priv->variant-= >fb_bpp)); =20 return 0; =20 diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c index 1cb6f0c224bb..fb7936bbdea8 100644 --- a/drivers/gpu/drm/qxl/qxl_drv.c +++ b/drivers/gpu/drm/qxl/qxl_drv.c @@ -122,7 +122,7 @@ qxl_pci_probe(struct pci_dev *pdev, const struct pci_de= vice_id *ent) if (ret) goto modeset_cleanup; =20 - drm_fbdev_generic_setup(&qdev->ddev, 32); + drm_fbdev_generic_setup(&qdev->ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); return 0; =20 modeset_cleanup: diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-d= u/rcar_du_drv.c index 957ea97541d5..c2c1523c5c47 100644 --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c @@ -681,7 +681,7 @@ static int rcar_du_probe(struct platform_device *pdev) =20 DRM_INFO("Device %s probed\n", dev_name(&pdev->dev)); =20 - drm_fbdev_generic_setup(&rcdu->ddev, 32); + drm_fbdev_generic_setup(&rcdu->ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/sti/sti_drv.c b/drivers/gpu/drm/sti/sti_drv.c index d858209cf8de..7fa653b28233 100644 --- a/drivers/gpu/drm/sti/sti_drv.c +++ b/drivers/gpu/drm/sti/sti_drv.c @@ -200,7 +200,7 @@ static int sti_bind(struct device *dev) =20 drm_mode_config_reset(ddev); =20 - drm_fbdev_generic_setup(ddev, 32); + drm_fbdev_generic_setup(ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c index 0da7cce2a1a2..36301d93e566 100644 --- a/drivers/gpu/drm/stm/drv.c +++ b/drivers/gpu/drm/stm/drv.c @@ -203,7 +203,7 @@ static int stm_drm_platform_probe(struct platform_devic= e *pdev) if (ret) goto err_put; =20 - drm_fbdev_generic_setup(ddev, 16); + drm_fbdev_generic_setup(ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 16)); =20 return 0; =20 diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4= i_drv.c index 275f7e4a03ae..2ec41525fe86 100644 --- a/drivers/gpu/drm/sun4i/sun4i_drv.c +++ b/drivers/gpu/drm/sun4i/sun4i_drv.c @@ -112,7 +112,7 @@ static int sun4i_drv_bind(struct device *dev) if (ret) goto finish_poll; =20 - drm_fbdev_generic_setup(drm, 32); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tids= s_drv.c index 04cfff89ee51..83bcfdc6d654 100644 --- a/drivers/gpu/drm/tidss/tidss_drv.c +++ b/drivers/gpu/drm/tidss/tidss_drv.c @@ -180,7 +180,7 @@ static int tidss_probe(struct platform_device *pdev) goto err_irq_uninstall; } =20 - drm_fbdev_generic_setup(ddev, 32); + drm_fbdev_generic_setup(ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 dev_dbg(dev, "%s done\n", __func__); =20 diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/t= ilcdc_drv.c index eee3c447fbac..e342ea5031c8 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -384,7 +384,7 @@ static int tilcdc_init(const struct drm_driver *ddrv, s= truct device *dev) goto init_failed; priv->is_registered =3D true; =20 - drm_fbdev_generic_setup(ddev, bpp); + drm_fbdev_generic_setup(ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, bpp)); return 0; =20 init_failed: diff --git a/drivers/gpu/drm/tiny/arcpgu.c b/drivers/gpu/drm/tiny/arcpgu.c index f0fa3b15c341..7f291db460e9 100644 --- a/drivers/gpu/drm/tiny/arcpgu.c +++ b/drivers/gpu/drm/tiny/arcpgu.c @@ -392,7 +392,7 @@ static int arcpgu_probe(struct platform_device *pdev) if (ret) goto err_unload; =20 - drm_fbdev_generic_setup(&arcpgu->drm, 16); + drm_fbdev_generic_setup(&arcpgu->drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 16)); =20 return 0; =20 diff --git a/drivers/gpu/drm/tiny/bochs.c b/drivers/gpu/drm/tiny/bochs.c index ed971c8bb446..fc52d9e7d50e 100644 --- a/drivers/gpu/drm/tiny/bochs.c +++ b/drivers/gpu/drm/tiny/bochs.c @@ -663,7 +663,7 @@ static int bochs_pci_probe(struct pci_dev *pdev, const = struct pci_device_id *ent if (ret) goto err_free_dev; =20 - drm_fbdev_generic_setup(dev, 32); + drm_fbdev_generic_setup(dev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); return ret; =20 err_free_dev: diff --git a/drivers/gpu/drm/tve200/tve200_drv.c b/drivers/gpu/drm/tve200/t= ve200_drv.c index 6d9d2921abf4..737cebb655a0 100644 --- a/drivers/gpu/drm/tve200/tve200_drv.c +++ b/drivers/gpu/drm/tve200/tve200_drv.c @@ -226,7 +226,7 @@ static int tve200_probe(struct platform_device *pdev) * Passing in 16 here will make the RGB565 mode the default * Passing in 32 will use XRGB8888 mode */ - drm_fbdev_generic_setup(drm, 16); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 16)); =20 return 0; =20 diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvid= eo/vbox_drv.c index f4f2bd79a7cb..fbe1f7368d53 100644 --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c @@ -79,7 +79,7 @@ static int vbox_pci_probe(struct pci_dev *pdev, const str= uct pci_device_id *ent) if (ret) goto err_irq_fini; =20 - drm_fbdev_generic_setup(&vbox->ddev, 32); + drm_fbdev_generic_setup(&vbox->ddev, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); =20 return 0; =20 diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c index 162bc18e7497..ecd2b41b87b3 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -291,7 +291,7 @@ static int vc4_drm_bind(struct device *dev) if (ret < 0) goto unbind_all; =20 - drm_fbdev_generic_setup(drm, 16); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 16)); =20 return 0; =20 diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/= virtgpu_drv.c index 5f25a8d15464..ef1e1b6e8cac 100644 --- a/drivers/gpu/drm/virtio/virtgpu_drv.c +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c @@ -128,7 +128,7 @@ static int virtio_gpu_probe(struct virtio_device *vdev) if (ret) goto err_deinit; =20 - drm_fbdev_generic_setup(vdev->priv, 32); + drm_fbdev_generic_setup(vdev->priv, DRM_FB_SET_OPTION(DRM_FB_BPP, 32)); return 0; =20 err_deinit: diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zyn= qmp_dpsub.c index 824b510e337b..2937e72d9fac 100644 --- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c +++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c @@ -135,7 +135,7 @@ static int zynqmp_dpsub_drm_init(struct zynqmp_dpsub *d= psub) goto err_poll_fini; =20 /* Initialize fbdev generic emulation. */ - drm_fbdev_generic_setup(drm, 24); + drm_fbdev_generic_setup(drm, DRM_FB_SET_OPTION(DRM_FB_BPP, 24)); =20 return 0; =20 diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 3af4624368d8..1da3ef76f499 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -35,6 +35,7 @@ struct drm_fb_helper; #include #include #include +#include #include =20 enum mode_set_atomic { @@ -42,6 +43,17 @@ enum mode_set_atomic { ENTER_ATOMIC_MODE_SET, }; =20 +#define DRM_FB_BPP_MASK GENMASK(7, 0) + +/* Using the GNU statement expression extension */ +#define DRM_FB_SET_OPTION(option, value) \ + ({ \ + WARN_ON(!FIELD_FIT(option##_MASK, value)); \ + FIELD_PREP(option##_MASK, value); \ + }) + +#define DRM_FB_GET_OPTION(option, word) FIELD_GET(option##_MASK, word) + /** * struct drm_fb_helper_surface_size - describes fbdev size and scanout su= rface size * @fb_width: fbdev width --=20 2.35.1 From nobody Sun Sep 22 03:33:44 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E507C433EF for ; Mon, 2 May 2022 08:53:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1383927AbiEBI4k (ORCPT ); Mon, 2 May 2022 04:56:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39752 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1383910AbiEBI4g (ORCPT ); Mon, 2 May 2022 04:56:36 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 46AC757B3B for ; Mon, 2 May 2022 01:53:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1651481587; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=RFdAbAFC6hVBQLu+NPQWCbO+3EFmV4d5chrstqJm+WU=; b=PekSMZ3zNgaAGaDR1kR8bSece3TILM9d+pnh1BCj6lHRl79GNCwjmueHClPAG3sed2+C+D x+bB4gOJXYH+QHUT9IBbMoCr8W7OMlcNokABEUxK3EtaKcLYt9LsLm2+NzQJ8Vhd7IvTJR hqQdntPUs+Qq6Nf/ybbhGvRyyJ8lgCc= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-644-nLYshxRlM92lqkSiSh7T-g-1; Mon, 02 May 2022 04:53:06 -0400 X-MC-Unique: nLYshxRlM92lqkSiSh7T-g-1 Received: by mail-wm1-f70.google.com with SMTP id v191-20020a1cacc8000000b0038ce818d2efso4848014wme.1 for ; Mon, 02 May 2022 01:53:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RFdAbAFC6hVBQLu+NPQWCbO+3EFmV4d5chrstqJm+WU=; b=g5WOEn4PoLkvRphgx/qT1SRSpfmaPKUusymzR8X2ozMASKwQb3jAziD1DPRq66aV5s 4n1glcN22QwszPMF4wUA0aBoqREg65ooQfU7L5qo8iw8szEXmGqqqCmZxYvnRCpQgJo/ g4gTec6iaSnFagXs9rbD/2/vUq1Y5eT62WpWdyrdaLjI/hChTi2KaqrKAXAb706LurZL qswPhTKUKlz2QB3YAx6rnqqOIrBlBkvuv0Dfon6VHNImbyRB5bZN+8+7D9hxzMmuDXGQ foYElTowr9BxKctzLuBpBUx+cB4I5dMy3zlc1z0+/48gmh/SNog1EYx2Rt42ncEc7K+m 4e1Q== X-Gm-Message-State: AOAM531Y839k/5SR2uBE64ViKLw++JHYJJN+Pyi52M0hF62MkroA5J37 7Hk9fuUX7AFIBviJn57Vy+i6KE1U6ZMHlwLIMbTRAk+Lze8o7KuU+D0gp/7wrj4gk5h2WvDs+MQ TyATfLaK92Dgb4Gm6lgxuZsoDxk9CZ65X/z44QIzie1ikZTs8pDGgyGkkkBPDU3vPI4ClirqA/+ A= X-Received: by 2002:a05:600c:6022:b0:394:3943:dd61 with SMTP id az34-20020a05600c602200b003943943dd61mr4082576wmb.196.1651481585184; Mon, 02 May 2022 01:53:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxwAdCi1b+GagstF4L/akza3x40XLpRMN8KNh6WPEAQN0F84cne1/xuXbVNcY/l5tbIzjtp6A== X-Received: by 2002:a05:600c:6022:b0:394:3943:dd61 with SMTP id az34-20020a05600c602200b003943943dd61mr4082552wmb.196.1651481584883; Mon, 02 May 2022 01:53:04 -0700 (PDT) Received: from minerva.. ([90.167.94.74]) by smtp.gmail.com with ESMTPSA id c1-20020adfc041000000b0020c5253d8desm6823400wrf.42.2022.05.02.01.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 01:53:04 -0700 (PDT) From: Javier Martinez Canillas To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, Daniel Vetter , Thomas Zimmermann , Javier Martinez Canillas Subject: [PATCH 3/3] drm: Allow simpledrm to setup its emulated FB as firmware provided Date: Mon, 2 May 2022 10:52:59 +0200 Message-Id: <20220502085259.286590-1-javierm@redhat.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220502084830.285639-1-javierm@redhat.com> References: <20220502084830.285639-1-javierm@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" Indicate to fbdev subsystem that the registered framebuffer is provided by the system firmware, so that it can handle accordingly. For example, would unregister the FB devices if asked to remove the conflicting framebuffers. Add a new DRM_FB_FW field to drm_fbdev_generic_setup() options parameter. Drivers can use this to indicate the FB helper initialization that the FB registered is provided by the firmware, so it can be configured as such. Suggested-by: Thomas Zimmermann Signed-off-by: Javier Martinez Canillas Reviewed-by: Thomas Zimmermann --- drivers/gpu/drm/drm_fb_helper.c | 9 +++++++++ drivers/gpu/drm/tiny/simpledrm.c | 2 +- include/drm/drm_fb_helper.h | 10 ++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helpe= r.c index f626947bb9b9..c2ff986f064d 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -1891,6 +1891,10 @@ __drm_fb_helper_initial_config_and_unlock(struct drm= _fb_helper *fb_helper, /* don't leak any physical addresses to userspace */ info->flags |=3D FBINFO_HIDE_SMEM_START; =20 + /* Indicate that the framebuffer is provided by the firmware */ + if (fb_helper->firmware) + info->flags |=3D FBINFO_MISC_FIRMWARE; + /* Need to drop locks to avoid recursive deadlock in * register_framebuffer. This is ok because the only thing left to do is * register the fbdev emulation instance in kernel_fb_helper_list. */ @@ -2511,6 +2515,8 @@ static const struct drm_client_funcs drm_fbdev_client= _funcs =3D { * * * DRM_FB_BPP: bits per pixel for the device. If the field is not set, * @dev->mode_config.preferred_depth is used instead. + * * DRM_FB_FW: if the framebuffer for the device is provided by the + * system firmware. * * This function sets up generic fbdev emulation for drivers that supports * dumb buffers with a virtual address and that can be mmap'ed. @@ -2537,6 +2543,7 @@ void drm_fbdev_generic_setup(struct drm_device *dev, = unsigned int options) { struct drm_fb_helper *fb_helper; unsigned int preferred_bpp =3D DRM_FB_GET_OPTION(DRM_FB_BPP, options); + bool firmware =3D DRM_FB_GET_OPTION(DRM_FB_FW, options); int ret; =20 drm_WARN(dev, !dev->registered, "Device has not been registered.\n"); @@ -2569,6 +2576,8 @@ void drm_fbdev_generic_setup(struct drm_device *dev, = unsigned int options) preferred_bpp =3D 32; fb_helper->preferred_bpp =3D preferred_bpp; =20 + fb_helper->firmware =3D firmware; + ret =3D drm_fbdev_client_hotplug(&fb_helper->client); if (ret) drm_dbg_kms(dev, "client hotplug ret=3D%d\n", ret); diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simple= drm.c index f5b8e864a5cd..5dcc21ea6180 100644 --- a/drivers/gpu/drm/tiny/simpledrm.c +++ b/drivers/gpu/drm/tiny/simpledrm.c @@ -901,7 +901,7 @@ static int simpledrm_probe(struct platform_device *pdev) if (ret) return ret; =20 - drm_fbdev_generic_setup(dev, 0); + drm_fbdev_generic_setup(dev, DRM_FB_SET_OPTION(DRM_FB_FW, 1)); =20 return 0; } diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 1da3ef76f499..0eec500e0784 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -44,6 +44,7 @@ enum mode_set_atomic { }; =20 #define DRM_FB_BPP_MASK GENMASK(7, 0) +#define DRM_FB_FW_MASK GENMASK(8, 8) =20 /* Using the GNU statement expression extension */ #define DRM_FB_SET_OPTION(option, value) \ @@ -197,6 +198,15 @@ struct drm_fb_helper { * See also: @deferred_setup */ int preferred_bpp; + + /** + * @firmware: + * + * Set if the driver indicates to the FB helper initialization that the + * framebuffer for the device being registered is provided by firmware, + * so that it can pass this on when registering the framebuffer device. + */ + bool firmware; }; =20 static inline struct drm_fb_helper * --=20 2.35.1