From patchwork Mon Jun 5 12:00:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masahiro Yamada X-Patchwork-Id: 103218 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp2641131vqr; Mon, 5 Jun 2023 05:18:10 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4CSDmWxAyGW1DFA2x9QErVI5VJX0VNQTmSXGtS8oZ8no9fA65D13LParLeuBghX3sm9z5O X-Received: by 2002:a17:90a:6885:b0:259:30e7:7349 with SMTP id a5-20020a17090a688500b0025930e77349mr1812000pjd.8.1685967490490; Mon, 05 Jun 2023 05:18:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685967490; cv=none; d=google.com; s=arc-20160816; b=cI3Fprk1Xv9g0EpU1zT1pg+kircZ1iPn/5JfwEnftZXUAA35+UDnC7D8Brd4XV1Jpu vaxkJFVAHRBZ7X0pfLiKjIl/ta9Hd0HL1meOr+jqK/yeMNX2lRoeOjyYFlfn2ign8fU6 L5EQkEmmf81/2JlaRqmTObJ84ByEbGgcEbK9knN7Ofa+hIBMWDbo1gzDg8lwV6JuX2ze ipfZ6h1rh46CU5t0OIYn2mecivjM/xcI2tWqO81PUDngMes5eMEIZAv9PKeH9EXJb4oh nnFylIip2UiZSrJeHfkKRZito62C8N7yBa3BEOnuN8WZZC8A/b/VMiDuEXiPNKr1wYJ4 2EMw== 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:dkim-signature; bh=h3QbYIOQWnosZFwhIpa4YbOmQJBfIBJSguUGxRrjx3w=; b=T2kjsK5kiAyCytGLfcFC/bQx4bJwyocCwRI7CgQ2JjY6ykK3fakrFdqfKaW6iD1Th6 B2fA9Uua5X+dpsL8njSFcoVlsmz6JMuVaQawOK3n/YHfd0X3VH74BmRhdMU3Vj4jfMLB vdbjs4mSWIHtOOicJuAq4qb6vhFD0RA1p+VCVn27MOtjqfKGin8WXO0rKKW/RsWgpJu/ eBhLYx7pMBnHWW5vDqfQy5B5BzD0/SF73OFtyan/KOLWWkUtYypFY54rw5xfxfAA6Nwy zeLkpSH9NylR4qA43FeEaBfjvFkV/NgLL5XEity3EnJIKpUe89DXcqQjHf0DnlGyrcMm gl5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dcm1pLPb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pg6-20020a17090b1e0600b002593aab997esi2315931pjb.91.2023.06.05.05.17.56; Mon, 05 Jun 2023 05:18:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=dcm1pLPb; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232177AbjFEMAt (ORCPT + 99 others); Mon, 5 Jun 2023 08:00:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39716 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229725AbjFEMAq (ORCPT ); Mon, 5 Jun 2023 08:00:46 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09FF2F3 for ; Mon, 5 Jun 2023 05:00:45 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 837BA62305 for ; Mon, 5 Jun 2023 12:00:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D69A9C433EF; Mon, 5 Jun 2023 12:00:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1685966443; bh=kfbk3hOkmnywwFv/S2NyjZP/fcC6qc/lEB2wv6BgwAE=; h=From:To:Cc:Subject:Date:From; b=dcm1pLPbRliA4HEfxQpwnenvf9MqT032BiTxY+XIDpjKUGeff6fxkYTJGsp4eA/V9 X7fD2FsynBFmB3QGCksv9t79IUelYCxsvZcv47pG7YyMQTjFKLB4Cxb9KY5RHVradX 8s21MHKxkRvRapw3oNylYJbIaSYEaKLelMWiq9cpFjQTJx7cJu8WXv0vA2Frl1Lxy0 ea4XIjE35D9Uchqs9X37ZOmf9DKh6geL2UxXX3MTxHxB0SZRYs1SF8NYG9ZoRDktxx saM7ZRmuQsNIOaqeEVg5CSADg6W1YVhx7UZgi7R8T7KL5XMtWvAaSopKRkBKRh0OVi dEWDehpOkE10A== From: Masahiro Yamada To: Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , dri-devel@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, Liu Ying , Masahiro Yamada , Laurent Pinchart , Daniel Vetter , David Airlie , Fabio Estevam , NXP Linux Team , Nick Terrell , Pengutronix Kernel Team , Sascha Hauer , Shawn Guo , linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 1/2] drm/bridge: imx: fix mixed module-builtin object Date: Mon, 5 Jun 2023 21:00:20 +0900 Message-Id: <20230605120021.1774711-1-masahiroy@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1767865047102848395?= X-GMAIL-MSGID: =?utf-8?q?1767865047102848395?= With CONFIG_DRM_IMX8QM_LDB=m and CONFIG_DRM_IMX8QXP_LDB=y (or vice versa), imx-ldb-helper.o is linked to a module and also to vmlinux even though the expected CFLAGS are different between builtins and modules. This is the same situation as fixed by commit 637a642f5ca5 ("zstd: Fixing mixed module-builtin objects"). Split imx-ldb-helper.c into a separate module. Signed-off-by: Masahiro Yamada Reviewed-by: Laurent Pinchart Reviewed-by: Liu Ying --- Changes in v3: - Remove MODULE_ALIAS() Changes in v2: - Add a separate module instead of making the functions static inline drivers/gpu/drm/bridge/imx/Kconfig | 5 +++++ drivers/gpu/drm/bridge/imx/Makefile | 5 +++-- drivers/gpu/drm/bridge/imx/imx-ldb-helper.c | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/bridge/imx/Kconfig b/drivers/gpu/drm/bridge/imx/Kconfig index 608f47f41bcd..9fae28db6aa7 100644 --- a/drivers/gpu/drm/bridge/imx/Kconfig +++ b/drivers/gpu/drm/bridge/imx/Kconfig @@ -1,9 +1,13 @@ if ARCH_MXC || COMPILE_TEST +config DRM_IMX_LDB_HELPER + tristate + config DRM_IMX8QM_LDB tristate "Freescale i.MX8QM LVDS display bridge" depends on OF depends on COMMON_CLK + select DRM_IMX_LDB_HELPER select DRM_KMS_HELPER help Choose this to enable the internal LVDS Display Bridge(LDB) found in @@ -13,6 +17,7 @@ config DRM_IMX8QXP_LDB tristate "Freescale i.MX8QXP LVDS display bridge" depends on OF depends on COMMON_CLK + select DRM_IMX_LDB_HELPER select DRM_KMS_HELPER help Choose this to enable the internal LVDS Display Bridge(LDB) found in diff --git a/drivers/gpu/drm/bridge/imx/Makefile b/drivers/gpu/drm/bridge/imx/Makefile index aa90ec8d5433..5fc821278693 100644 --- a/drivers/gpu/drm/bridge/imx/Makefile +++ b/drivers/gpu/drm/bridge/imx/Makefile @@ -1,7 +1,8 @@ -imx8qm-ldb-objs := imx-ldb-helper.o imx8qm-ldb-drv.o +obj-$(CONFIG_DRM_IMX_LDB_HELPER) += imx-ldb-helper.o +imx8qm-ldb-objs := imx8qm-ldb-drv.o obj-$(CONFIG_DRM_IMX8QM_LDB) += imx8qm-ldb.o -imx8qxp-ldb-objs := imx-ldb-helper.o imx8qxp-ldb-drv.o +imx8qxp-ldb-objs := imx8qxp-ldb-drv.o obj-$(CONFIG_DRM_IMX8QXP_LDB) += imx8qxp-ldb.o obj-$(CONFIG_DRM_IMX8QXP_PIXEL_COMBINER) += imx8qxp-pixel-combiner.o diff --git a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c b/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c index 7338b84bc83d..6967325cd8ee 100644 --- a/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c +++ b/drivers/gpu/drm/bridge/imx/imx-ldb-helper.c @@ -4,8 +4,10 @@ * Copyright 2019,2020,2022 NXP */ +#include #include #include +#include #include #include @@ -19,12 +21,14 @@ bool ldb_channel_is_single_link(struct ldb_channel *ldb_ch) { return ldb_ch->link_type == LDB_CH_SINGLE_LINK; } +EXPORT_SYMBOL_GPL(ldb_channel_is_single_link); bool ldb_channel_is_split_link(struct ldb_channel *ldb_ch) { return ldb_ch->link_type == LDB_CH_DUAL_LINK_EVEN_ODD_PIXELS || ldb_ch->link_type == LDB_CH_DUAL_LINK_ODD_EVEN_PIXELS; } +EXPORT_SYMBOL_GPL(ldb_channel_is_split_link); int ldb_bridge_atomic_check_helper(struct drm_bridge *bridge, struct drm_bridge_state *bridge_state, @@ -38,6 +42,7 @@ int ldb_bridge_atomic_check_helper(struct drm_bridge *bridge, return 0; } +EXPORT_SYMBOL_GPL(ldb_bridge_atomic_check_helper); void ldb_bridge_mode_set_helper(struct drm_bridge *bridge, const struct drm_display_mode *mode, @@ -69,6 +74,7 @@ void ldb_bridge_mode_set_helper(struct drm_bridge *bridge, break; } } +EXPORT_SYMBOL_GPL(ldb_bridge_mode_set_helper); void ldb_bridge_enable_helper(struct drm_bridge *bridge) { @@ -81,6 +87,7 @@ void ldb_bridge_enable_helper(struct drm_bridge *bridge) */ regmap_write(ldb->regmap, ldb->ctrl_reg, ldb->ldb_ctrl); } +EXPORT_SYMBOL_GPL(ldb_bridge_enable_helper); void ldb_bridge_disable_helper(struct drm_bridge *bridge) { @@ -95,6 +102,7 @@ void ldb_bridge_disable_helper(struct drm_bridge *bridge) regmap_write(ldb->regmap, ldb->ctrl_reg, ldb->ldb_ctrl); } +EXPORT_SYMBOL_GPL(ldb_bridge_disable_helper); int ldb_bridge_attach_helper(struct drm_bridge *bridge, enum drm_bridge_attach_flags flags) @@ -117,6 +125,7 @@ int ldb_bridge_attach_helper(struct drm_bridge *bridge, ldb_ch->next_bridge, bridge, DRM_BRIDGE_ATTACH_NO_CONNECTOR); } +EXPORT_SYMBOL_GPL(ldb_bridge_attach_helper); int ldb_init_helper(struct ldb *ldb) { @@ -157,6 +166,7 @@ int ldb_init_helper(struct ldb *ldb) return 0; } +EXPORT_SYMBOL_GPL(ldb_init_helper); int ldb_find_next_bridge_helper(struct ldb *ldb) { @@ -184,6 +194,7 @@ int ldb_find_next_bridge_helper(struct ldb *ldb) return 0; } +EXPORT_SYMBOL_GPL(ldb_find_next_bridge_helper); void ldb_add_bridge_helper(struct ldb *ldb, const struct drm_bridge_funcs *bridge_funcs) @@ -204,6 +215,7 @@ void ldb_add_bridge_helper(struct ldb *ldb, drm_bridge_add(&ldb_ch->bridge); } } +EXPORT_SYMBOL_GPL(ldb_add_bridge_helper); void ldb_remove_bridge_helper(struct ldb *ldb) { @@ -219,3 +231,8 @@ void ldb_remove_bridge_helper(struct ldb *ldb) drm_bridge_remove(&ldb_ch->bridge); } } +EXPORT_SYMBOL_GPL(ldb_remove_bridge_helper); + +MODULE_DESCRIPTION("i.MX8 LVDS Display Bridge(LDB)/Pixel Mapper bridge helper"); +MODULE_AUTHOR("Liu Ying "); +MODULE_LICENSE("GPL");