From nobody Fri Apr 17 23:05:01 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF2F027B340 for ; Thu, 12 Feb 2026 19:26:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770924406; cv=none; b=WIaxaj7Q+IG2yK/vVbovgSoBRuAAhUpRuN24RNIE9fshNOvdL4C/Ro36tUdCfLduJ/ruoC2bP23dX5n1rn0thbzekXpzqACMjOSqMVrdyBSRgPh/d18MwIfHVTUmjIabECRiW/BUnVUEJ36ipMrHvNtYeRlnC+G08M6STcyxD4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770924406; c=relaxed/simple; bh=/aorVzEMpL/fnlHEozhIwNpRQYKov8HdhuGjgN3WWpY=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=VEdz9YdYgFX9+eZl88LOw0XIFMEnnrjvfrdrISWfE9XdVGfJ1zdj61cdYIh7Kpife73+K9LMmlVoKPx2qbI3Lupzj9uxc+ClhXJbO/IKLq5vWLWESAXx5aMfWssxDTO9IO59wjbDRdsqlCkcuG8tj0DvszSpl/U7fLx1SG6Fsow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TEbLG2f9; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TEbLG2f9" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4806bf39419so16840915e9.1 for ; Thu, 12 Feb 2026 11:26:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770924403; x=1771529203; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=VbOs3cQtoIqcba8ksEIev4JgP5sJJiSr7MKbA/ghxVg=; b=TEbLG2f9dWnHydAYnBhIgNmohbgmNv9UAL9J3z9QNlnKJAKabw7HuDH9apZKBZ68pb VOj1fIOi64FMZuRO1nNZ0z9itw+lSnLRiRexpLu6oyfGSwksai9DLJFeMQ+gHR4f97cn WisAIdM2b9NHxPPOqtrSX6H+RxE7/lHgy7B5Rz0FWd5+TyogRSo9BLPWAhw8D5ttC5Ad zUkR43cZVtTGnBlupusAwzX69J+x8A8/pmb8XtCTMsyo4Ai6UtbZhTjNVcO8NbcRfzuu qvQTUDOCStsn4/KgOH9fEXe13tgoi9MZ27UfHdvMpimPwmBHc4wQod1zeFrDNTEFuCrA QgTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770924403; x=1771529203; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=VbOs3cQtoIqcba8ksEIev4JgP5sJJiSr7MKbA/ghxVg=; b=bAjoxxml1hPnclrN3Kzy+MRURClkapjcowuFlU5SyRgxyFFsTc1StQqozyxe59f1Tx lr3soSRJNw8OqjkG9Li3fVKsX9TssVm6c1niD/37QffcJ24scSIBtEdnJPEFipg8B6Xr yVy8lr1lSrcmpwdKh6uvRKSer4oA7ydHUbMOyfewEoL32VDIorAjdcetMhs1yvNysAFQ bdhb1stHM2fPnlDsqYVR8eN0YtfToCuautFNrWuH6jMg5r/VOsmcqDGl5tWiTYv3nUpa /44109SG49bZt4DE3btozEf+dIjp1XFpWBW9zkvILM0Rd4oYY33/BMNDv3iiSzS7JYiw sEYw== X-Forwarded-Encrypted: i=1; AJvYcCXMKlTpn+njmem8vp11/tstu3aZTzqOZjl4YtyE9qAXbPdN6QkORAvEDd0AYEWd8X9Ima5W+15FsgB1QT4=@vger.kernel.org X-Gm-Message-State: AOJu0YwFTdTakbJ/sDywe7cd9MyLRQhWxuFsDnIBHD61fSjd0tgbf82k EWoH5c4AfqVnqE3HunvIfMQKs1BlI/2X+c8x4ltIB5PDiJ2+LrL0RMcM X-Gm-Gg: AZuq6aLlGOqRxF9KaN9yId/yXP6wsKUUpDQFI+oZlF4nAJl8bD/swq9vn+Qe9jUzk6l KQjlR6KGtAgWAHriRmHcSnXlzYH7e6N5J647O+vzD/XSBE2rJVa6N9AmCoDHeYVfgFtSRW2svAu N3kXTQmYWus7/6Uckyu0gbAsGAEe690+PF6yOdP2SympewABjcirg+XK0jC3j++S3JmAiIpi4Wx YUNPvgvgRUEl59oWHWwAEmUU6VFUDeDyxp5oE4eZcg8gAXcHCwkrVqApEb8WujH8o3aH9/36LMe zUXJfbxwZtvIsvmZRHcEq1+cFQH1jk3tnhsugC/XIGLFUzwe7XxIdYFP7mfmyR2nXmGXU1eorFF t7a3tkdlYST0zr6FsLO24swtRgXXKmnejLv+8dlClSU12t8fGwk5vEbu+YoWUo+KJjWe1ZcOE21 Soe+/343XM+YcsLPBHgJ4= X-Received: by 2002:a05:600c:1f8d:b0:46e:59bd:f7e2 with SMTP id 5b1f17b1804b1-4836601387bmr57305525e9.11.1770924402981; Thu, 12 Feb 2026 11:26:42 -0800 (PST) Received: from luca-vm.lan ([154.61.61.58]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-483719b8e71sm20405e9.2.2026.02.12.11.26.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Feb 2026 11:26:42 -0800 (PST) From: Luca Leonardo Scorcia To: linux-mediatek@lists.infradead.org Cc: Luca Leonardo Scorcia , Chun-Kuang Hu , Philipp Zabel , David Airlie , Simona Vetter , Matthias Brugger , AngeloGioacchino Del Regno , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH v2] drm/mediatek: Remove all conflicting aperture devices during probe Date: Thu, 12 Feb 2026 19:22:47 +0000 Message-ID: <20260212192605.263160-1-l.scorcia@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If a device has a framebuffer available it might be already used as display by simple-framebuffer or simpledrm when mediatek-drm is probed. This is actually helpful when porting to a new device as framebuffers are simple to setup in device trees and fbcon can be used to monitor the kernel boot process. When drm-mediatek loads a new fb device is initialized, however fbcon remains attached to the initial framebuffer which is no longer connected to the actual display - the early fb is never removed. We can gracefully transition from framebuffer handling to drm-managed display by calling aperture_remove_all_conflicting_devices before registering mediatek-drm. This takes care of unloading other fb devices/drivers and disconnects fbcon which then automatically reconnects to mediatekdrmfb as soon as it's available. The function is invoked just before drm_dev_register() to kick out the existing framebuffer as late as possible to reduce the time the screen is unresponsive. Signed-off-by: Luca Leonardo Scorcia Reviewed-by: CK Hu --- v2: Moved the call to aperture_remove_all_conflicting_devices to=20 right before drm_dev_register() drivers/gpu/drm/mediatek/mtk_drm_drv.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/media= tek/mtk_drm_drv.c index a94c51a83261..02effd9fc698 100644 --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c @@ -4,6 +4,7 @@ * Author: YT SHEN */ =20 +#include #include #include #include @@ -670,6 +671,10 @@ static int mtk_drm_bind(struct device *dev) if (ret < 0) goto err_free; =20 + ret =3D aperture_remove_all_conflicting_devices(DRIVER_NAME); + if (ret < 0) + dev_err(dev, "Error %d while removing conflicting aperture devices", ret= ); + ret =3D drm_dev_register(drm, 0); if (ret < 0) goto err_deinit; --=20 2.43.0