Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp2156091yba; Wed, 3 Apr 2019 02:26:48 -0700 (PDT) X-Google-Smtp-Source: APXvYqy16iBiXfmpL1+W7CPwW634998TzbpkOH2ET0XMAqxR3GIKPXMjLGyriqfs9Wvf+IoroxZI X-Received: by 2002:a17:902:5a5:: with SMTP id f34mr76291478plf.35.1554283608480; Wed, 03 Apr 2019 02:26:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554283608; cv=none; d=google.com; s=arc-20160816; b=GAfaz9PztRWlZtfSSpIpaLWdacBSAA9nNPUO8L3KWwMqOP6L5yarhBiRXf7Y4sHekN 9AWCxzg739rNQeoXLUfeiQR711RVIjoGvU+5nng0A5q1kbUcGaiGjhTpf6s270d1yrDe abHRSZf4RtjrklBEsBgafuA/kKAjnB5dp9LLA6yAzi15WuuCY9BhPLo0JKLOX5VkAAUA 7BqgqKTBy3wNkSse99pc3iBXn+t34uTeffuSQtK0ELGwwSshDngSoaKNbhfKPrzFtfIN Fcdh8Ql8u4aWcPXyzJ7IDDS69I6lb3GE60selGl/Xw1WBHq2bQkJt7tOgOQsWAEhl873 plXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:to:from; bh=r6E80Wtr5EuTqa3jOvokdB/0GFsUsx/t8yw/dTrzGrM=; b=a+QKmaFN+alOxdIsHOVDH7yPisS8khOy4bFD3xVscBn5UhjBYZf9Axe6qGG+kjGchZ LRaTDF1YDTBWLmeFW1I7BujR/REWoTJtKxpbSsegqJ/oGsKBI3MOys1P1oVjOsL1aI7+ vP9zP/KuJAntJ7L+Djmz4Ih5VqJBJVz76SVpVb5g2D3s9RDPj48d2QEl6bdWJsskGtxv oQQVvcr7RZZrVWcr6UKl61xlFpycOC5j99yGRsFQwGxU7TZR4MQ7Cay++IPg8R26NaU9 ApHslwZf5rhkjp2B0nizRq5h7fJ5eOlO5d2H/bMY1HH+ehvqFt6mM6wUFmZp+2xKxOK1 M2rQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z186si11913662pgd.155.2019.04.03.02.26.33; Wed, 03 Apr 2019 02:26:48 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726711AbfDCJZ3 (ORCPT + 99 others); Wed, 3 Apr 2019 05:25:29 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:43750 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725956AbfDCJZ3 (ORCPT ); Wed, 3 Apr 2019 05:25:29 -0400 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx08-00178001.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x339LXDn029080; Wed, 3 Apr 2019 11:25:20 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2rmh5yaw3r-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Wed, 03 Apr 2019 11:25:20 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 8BE4D34; Wed, 3 Apr 2019 09:25:19 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas21.st.com [10.75.90.44]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 5328A1752; Wed, 3 Apr 2019 09:25:19 +0000 (GMT) Received: from SAFEX1HUBCAS23.st.com (10.75.90.47) by SAFEX1HUBCAS21.st.com (10.75.90.44) with Microsoft SMTP Server (TLS) id 14.3.361.1; Wed, 3 Apr 2019 11:25:19 +0200 Received: from localhost (10.201.23.97) by webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.435.0; Wed, 3 Apr 2019 11:25:16 +0200 From: =?UTF-8?q?Yannick=20Fertr=C3=A9?= To: Yannick Fertre , Philippe Cornu , Benjamin Gaignard , Vincent Abriou , David Airlie , Daniel Vetter , Maxime Coquelin , Alexandre Torgue , , , , Subject: [PATCH] drm/stm: ltdc: add modifier support Date: Wed, 3 Apr 2019 11:25:14 +0200 Message-ID: <1554283514-2960-1-git-send-email-yannick.fertre@st.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Originating-IP: [10.201.23.97] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2019-04-03_05:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Signed-off-by: Mickael Reulier Signed-off-by: Yannick Fertré --- drivers/gpu/drm/stm/ltdc.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c index b1741a9..6fa8fbc 100644 --- a/drivers/gpu/drm/stm/ltdc.c +++ b/drivers/gpu/drm/stm/ltdc.c @@ -232,6 +232,11 @@ static const enum ltdc_pix_fmt ltdc_pix_fmt_a1[NB_PF] = { PF_ARGB4444 /* 0x07 */ }; +static const u64 ltdc_format_modifiers[] = { + DRM_FORMAT_MOD_LINEAR, + DRM_FORMAT_MOD_INVALID +}; + static inline u32 reg_read(void __iomem *base, u32 reg) { return readl_relaxed(base + reg); @@ -864,6 +869,16 @@ static void ltdc_plane_atomic_print_state(struct drm_printer *p, fpsi->counter = 0; } +static bool ltdc_plane_format_mod_supported(struct drm_plane *plane, + u32 format, + u64 modifier) +{ + if (modifier == DRM_FORMAT_MOD_LINEAR) + return true; + + return false; +} + static const struct drm_plane_funcs ltdc_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, @@ -872,6 +887,7 @@ static const struct drm_plane_funcs ltdc_plane_funcs = { .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state, .atomic_destroy_state = drm_atomic_helper_plane_destroy_state, .atomic_print_state = ltdc_plane_atomic_print_state, + .format_mod_supported = ltdc_plane_format_mod_supported, }; static const struct drm_plane_helper_funcs ltdc_plane_helper_funcs = { @@ -890,6 +906,7 @@ static struct drm_plane *ltdc_plane_create(struct drm_device *ddev, unsigned int i, nb_fmt = 0; u32 formats[NB_PF * 2]; u32 drm_fmt, drm_fmt_no_alpha; + const u64 *modifiers = ltdc_format_modifiers; int ret; /* Get supported pixel formats */ @@ -918,7 +935,7 @@ static struct drm_plane *ltdc_plane_create(struct drm_device *ddev, ret = drm_universal_plane_init(ddev, plane, possible_crtcs, <dc_plane_funcs, formats, nb_fmt, - NULL, type, NULL); + modifiers, type, NULL); if (ret < 0) return NULL; @@ -1179,6 +1196,8 @@ int ltdc_load(struct drm_device *ddev) goto err; } + ddev->mode_config.allow_fb_modifiers = true; + ret = ltdc_crtc_init(ddev, crtc); if (ret) { DRM_ERROR("Failed to init crtc\n"); -- 2.7.4