From mboxrd@z Thu Jan 1 00:00:00 1970 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 650E1C433EF for ; Mon, 11 Apr 2022 15:50:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pt3+u0kg9+nD/7VQjc/Z6veP6W08H9/WTftdHKSylW0=; b=4rIVMdRSDycPV0 majVbpP8lY1pIMbtjZToC0HfVZ09oOysZL1tm92gR+hH/3nsXPLtG09etIK31rn8Utp0/zqJK2Mzw ewbgW+SbBUYu4zjgLlWszwGJlIeFl320QBwaEuYF0K0rYTYp4tNIE898wzY7jYhRec517/1lr/KBe 02AJU0/pXOuUf/rTK+0nwxkD+XWKJF+NMeuVUPnrSa+HJ22xAQwjPqPRbTjwvWaCLzei0+uIEfNEV Ccmvs0BkyzdqlyOEdqPs+EjSyeAipY4RK1PLLdBhLAPKIk4Dwbl6G5dQwslS7nsOxPvPXAuZEOCip i5Uqoi/1z0DlQVcn33SA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ndwHo-009f7M-SN; Mon, 11 Apr 2022 15:49:04 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ndwHk-009f6S-QI for linux-arm-kernel@lists.infradead.org; Mon, 11 Apr 2022 15:49:02 +0000 Received: by mail-wm1-x32a.google.com with SMTP id h16so10205683wmd.0 for ; Mon, 11 Apr 2022 08:49:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qi7eZg7eL4sVsLMsy0YjPHKG017lj1wQEyIFwGViWAM=; b=Hcuy/vAQzyD17YUsghb6LKm+6+s4YDr705jX4CsiwWq9VxmAGbrdyRmeixApfoNWmV RyZjfdTljqLOpTYYxSGTXxN7zQo9o1xWzQ9142lEscAsZnMwU+Kt9dNgtoiCAj8HwqID AxkThIp1zjjtHUEUQe1xs9yhbIS0Uy5Qrvo1ALCaK/2TxFAh/7lWWOaJIg1R97CFYX9k dNj0PI330BZ35QIkJrSSSI7lCYuC5NYfWV6WkB+8rMf+s9YdsI4O3ZIXIxSqLUAf1ppd 5wD/9QVOwN3G0fJ1vQyHxUpDwTbnkVezLEd7ehy3CDnyCmEhPaJxAxeMdIPE+of+F2ud n4cg== 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=qi7eZg7eL4sVsLMsy0YjPHKG017lj1wQEyIFwGViWAM=; b=I2E/98GW+7XZx4EO9HMNI7EqNhQOFZmyBYjKn2zadD5xwN8QyyeXuAkc9wKjcEv+iq 5f4sdqA0CGBomxlWpQUPgKNiMWHBv9idUK0XBtkMfKeQ8Qo+21mEdT5H/UI1H3++MiNE OA9cx5rgvnpWd4dJzx4PByTgvMPH9qKFafJbsFGgvtm070doP45cZ7pdYY829ASLHhZG 3Jhy1/DQkgw1sdyO24FQgPwOHkx4FPvYeda4NTbAeda+Qkj46C+sS/OxCWqvHoj+/veI 4dQoXUE3aCoT11s6Rsr/5lulEChvB1AV1J/itTW19Tkubr5SJ6qQyXJ5kkGiSFX/mZ7d Drlw== X-Gm-Message-State: AOAM5335FqusUpgQ3Wj6CIwoXI8ULMr0DOQR6iF6DkmfKLZcxf78P8JJ dzqoS8jGfCM+F9wlRdPtL3E= X-Google-Smtp-Source: ABdhPJxg6gCExkFst8ObOPuO3ENH/Jiahpnnv1uxdrIaBDYAOcjx7+rWzK7x7weJ/8GqR1ckC8YxOA== X-Received: by 2002:a05:600c:4f95:b0:38e:b596:b3f5 with SMTP id n21-20020a05600c4f9500b0038eb596b3f5mr9549574wmq.164.1649692139309; Mon, 11 Apr 2022 08:48:59 -0700 (PDT) Received: from kista.localnet (cpe-86-58-32-107.static.triera.net. [86.58.32.107]) by smtp.gmail.com with ESMTPSA id r129-20020a1c2b87000000b0038e6a025d05sm19083256wmr.18.2022.04.11.08.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 08:48:59 -0700 (PDT) From: Jernej =?utf-8?B?xaBrcmFiZWM=?= To: Chen-Yu Tsai , Maxime Ripard , Samuel Holland Cc: Samuel Holland , Daniel Vetter , David Airlie , Krzysztof Kozlowski , Rob Herring , devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev Subject: Re: [PATCH 06/10] drm/sun4i: Allow VI layers to be primary planes Date: Mon, 11 Apr 2022 17:48:57 +0200 Message-ID: <3096240.5fSG56mABF@kista> In-Reply-To: <20220411043423.37333-7-samuel@sholland.org> References: <20220411043423.37333-1-samuel@sholland.org> <20220411043423.37333-7-samuel@sholland.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220411_084900_906533_28064BD1 X-CRM114-Status: GOOD ( 23.86 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Dne ponedeljek, 11. april 2022 ob 06:34:18 CEST je Samuel Holland napisal(a): > D1's mixer 1 has no UI layers, only a single VI layer. That means the > mixer can only be used if the primary plane comes from this VI layer. > Add the code to handle this case, setting the mixer's global registers > in the same way as when the primary plane comes from a UI layer. > > Signed-off-by: Samuel Holland > --- > > drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 36 +++++++++++++++++++++++++- > 1 file changed, 35 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/ sun8i_vi_layer.c > index bb7c43036dfa..86212cb2098c 100644 > --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c > @@ -146,6 +146,36 @@ static int sun8i_vi_layer_update_coord(struct sun8i_mixer *mixer, int channel, > insize = SUN8I_MIXER_SIZE(src_w, src_h); > outsize = SUN8I_MIXER_SIZE(dst_w, dst_h); > > + if (plane->type == DRM_PLANE_TYPE_PRIMARY) { > + bool interlaced = false; > + u32 val; > + > + DRM_DEBUG_DRIVER("Primary layer, updating global size W: %u H: %u\n", > + dst_w, dst_h); > + regmap_write(mixer->engine.regs, > + SUN8I_MIXER_GLOBAL_SIZE, > + outsize); > + regmap_write(mixer->engine.regs, > + SUN8I_MIXER_BLEND_OUTSIZE(bld_base), outsize); > + > + if (state->crtc) > + interlaced = state->crtc->state- >adjusted_mode.flags > + & DRM_MODE_FLAG_INTERLACE; > + > + if (interlaced) > + val = SUN8I_MIXER_BLEND_OUTCTL_INTERLACED; > + else > + val = 0; > + > + regmap_update_bits(mixer->engine.regs, > + SUN8I_MIXER_BLEND_OUTCTL(bld_base), > + SUN8I_MIXER_BLEND_OUTCTL_INTERLACED, > + val); > + > + DRM_DEBUG_DRIVER("Switching display mixer interlaced mode %s\n", > + interlaced ? "on" : "off"); > + } > + Above code doesn't really belong to layer management and actually cause an issue when primary plane is reconfigured to cover only part of display. It should be executed at mode set time. I already wrote patches for that. Feel free to reuse them: https://github.com/jernejsk/linux-1/commit/ bddb61cfa9c8ab70f5af6ed384fc7ffe159ac064 https://github.com/jernejsk/linux-1/commit/ 3320184b88df81b7d3d2b375db899442e1085519 https://github.com/jernejsk/linux-1/commit/ 05a04d721ae31dbff0432606892ec94b6a63b8bc FWIW, I have other clean ups stacked here: https://github.com/jernejsk/ linux-1/commits/hdmi-yuv420 Best regards, Jernej > /* Set height and width */ > DRM_DEBUG_DRIVER("Layer source offset X: %d Y: %d\n", > (state->src.x1 >> 16) & ~(format->hsub - 1), > @@ -542,6 +572,7 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, > struct sun8i_mixer *mixer, > int index) > { > + enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; > u32 supported_encodings, supported_ranges; > unsigned int plane_cnt, format_count; > struct sun8i_vi_layer *layer; > @@ -560,12 +591,15 @@ struct sun8i_vi_layer *sun8i_vi_layer_init_one(struct drm_device *drm, > format_count = ARRAY_SIZE(sun8i_vi_layer_formats); > } > > + if (!mixer->cfg->ui_num && index == 0) > + type = DRM_PLANE_TYPE_PRIMARY; > + > /* possible crtcs are set later */ > ret = drm_universal_plane_init(drm, &layer->plane, 0, > &sun8i_vi_layer_funcs, > formats, format_count, > sun8i_layer_modifiers, > - DRM_PLANE_TYPE_OVERLAY, NULL); > + type, NULL); > if (ret) { > dev_err(drm->dev, "Couldn't initialize layer\n"); > return ERR_PTR(ret); > -- > 2.35.1 > > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel