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 E8586C3DA66 for ; Fri, 25 Aug 2023 15:43:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:Message-ID:References:In-Reply-To:Subject:Cc:To:From:Date: MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kciCQvrkoUWCt4HcHnjs9NYS3EE+wJ/FPYu7QP0vRIE=; b=EO7l7xWIxKLFAiWr9DemeVKbRV T27pM20TC7I/P+5j8bKTih3qWqcB6I8pCeZ5KVs64kvOwO8/u/YBS4x4JhaNi1aTQcdJ5HaHH3ldH uXAbd/DXuzp3cWh9rlGglBjWnyCLWKrZ0oN4tFbFnkfDli3WfubYa9tJgLEgvWZWeO2yCXNCauf4T nFX02hgCmhbri2fnWF+ecFtOFRPv1waOiJFnT46ULeMIqFywQFTNzSbQVO2jd+4yc2KbFaeGgk9cT HcM2sT2iwJc9WAaFDeuGfQprKX3AfJMoX/QK6Tqa0N6nl3KOxMXkDuyXdsvFmDYsdqR+161PSgRK0 vSwwgTew==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZYxz-005hTJ-2D; Fri, 25 Aug 2023 15:43:19 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZYxv-005hSj-0q; Fri, 25 Aug 2023 15:43:17 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 78EA860D3D; Fri, 25 Aug 2023 15:43:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7AEAAC433C7; Fri, 25 Aug 2023 15:43:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692978193; bh=G9n/YPFGOVSkbEMJy6OZc/r3PTQEJOCu7MoRuHGRBqQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Y7KI8dqWWKtEC8q2IiKsLvTqqQ7GnFkrnEH23Hw+QAQlKTvGA01ZNoDwsn98W4mgE O2N+gXOxmgQ0WQVSkSYbszV9VMDWETufTkVAjQALTWyR2+EWmUEMT5rU1o5ycIodnW AAsU3VNB5eQF1b4OoJ3Tc1e+I699bsezD/ANKhYLOXBJspIYC02bQUx7AyUqIDA7Ow MY94ukBRbq9Ci1MQJS9GEza4eflcCyYrTp/g3/2nEXisyk8uv+qdAWJZO27u5fH13g qhS/TKQLxOuoQ2o3LnaI+NXxoqklWDcKPZnRTyPTNgi8N//f/Gxa/CyWRAijik+tdL Xsu9rmemZXONQ== MIME-Version: 1.0 Date: Fri, 25 Aug 2023 17:42:59 +0200 From: Michael Walle To: =?UTF-8?Q?N=C3=ADcolas_F=2E_R=2E_A=2E_Prado?= Cc: angelogioacchino.delregno@collabora.com, airlied@gmail.com, amergnat@baylibre.com, chunkuang.hu@kernel.org, ck.hu@mediatek.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, ehristev@collabora.com, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, p.zabel@pengutronix.de, wenst@chromium.org Subject: Re: [PATCH v7 09/11] drm/mediatek: dp: Add support for embedded DisplayPort aux-bus In-Reply-To: <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> References: <20230725073234.55892-10-angelogioacchino.delregno@collabora.com> <20230825120109.3132209-1-mwalle@kernel.org> <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> Message-ID: X-Sender: mwalle@kernel.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230825_084315_393422_0B7B0E54 X-CRM114-Status: GOOD ( 37.04 ) X-BeenThere: linux-mediatek@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Linux-mediatek" Errors-To: linux-mediatek-bounces+linux-mediatek=archiver.kernel.org@lists.infradead.org Hi Nicolas, >> > For the eDP case we can support using aux-bus on MediaTek DP: this >> > gives us the possibility to declare our panel as generic "panel-edp" >> > which will automatically configure the timings and available modes >> > via the EDID that we read from it. >> > >> > To do this, move the panel parsing at the end of the probe function >> > so that the hardware is initialized beforehand and also initialize >> > the DPTX AUX block and power both on as, when we populate the >> > aux-bus, the panel driver will trigger an EDID read to perform >> > panel detection. >> > >> > Last but not least, since now the AUX transfers can happen in the >> > separated aux-bus, it was necessary to add an exclusion for the >> > cable_plugged_in check in `mtk_dp_aux_transfer()` and the easiest >> > way to do this is to simply ignore checking that when the bridge >> > type is eDP. >> >> This patch breaks my board based on the MT8195 which only has one >> DisplayPort output port. I suspect it might also break the >> mt8195-cherry >> board. > > Do you mean that your board does not have an internal display, only the > one > output port? If so, why are you enabling the nodes for the internal > display path > in your board specific DT? Well, that depends. The board actually has an eDP socket, but because we are an OEM, there might be no display connected to it. (And I haven't tried it yet). It should probably go into an own device tree or overlay if it is used. I agree. But it looked like it was auto-detectable (it even has a HDP pin on the eDP socket, not sure about its use case..) But the real reason I've enabled it was because I'll get an kernel oops otherwise. I thought it might be some quirk that you'll need both, because eDP will register even if theres no display - as you've mentioned below. Here's the splat: [ 3.237064] mediatek-drm mediatek-drm.10.auto: bound 1c110000.vpp-merge (ops mtk_disp_merge_component_ops) [ 3.238274] mediatek-drm mediatek-drm.8.auto: Not creating crtc 0 because component 8 is disabled or missing [ 3.239504] mediatek-drm mediatek-drm.8.auto: Not creating crtc 0 because component 9 is disabled or missing [ 3.240741] Unable to handle kernel NULL pointer dereference at virtual address 00000000000004a0 [ 3.241841] Mem abort info: [ 3.242192] ESR = 0x0000000096000004 [ 3.242662] EC = 0x25: DABT (current EL), IL = 32 bits [ 3.243328] SET = 0, FnV = 0 [ 3.243710] EA = 0, S1PTW = 0 [ 3.244104] FSC = 0x04: level 0 translation fault [ 3.244717] Data abort info: [ 3.245078] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 [ 3.245765] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 3.246398] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 3.247063] [00000000000004a0] user address but active_mm is swapper [ 3.247860] Internal error: Oops: 0000000096000004 [#1] SMP [ 3.248559] Modules linked in: [ 3.248945] CPU: 4 PID: 11 Comm: kworker/u16:0 Not tainted 6.5.0-rc7-next-20230821+ #2225 [ 3.249970] Hardware name: Kontron 3.5"-SBC-i1200 (DT) [ 3.250614] Workqueue: events_unbound deferred_probe_work_func [ 3.251347] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 3.252220] pc : mtk_drm_crtc_dma_dev_get+0x8/0x18 [ 3.252824] lr : mtk_drm_bind+0x458/0x558 [ 3.253326] sp : ffff800082b23a20 [ 3.253741] x29: ffff800082b23a20 x28: ffff000002c78880 x27: ffff8000816466d0 [ 3.254635] x26: ffff000002c6f010 x25: 0000000000000003 x24: 0000000000000000 [ 3.255529] x23: ffff000002c78880 x22: 0000000000000002 x21: 0000000000000000 [ 3.256423] x20: ffff000006516800 x19: ffff000002c78880 x18: ffffffffffffffff [ 3.257317] x17: 6f63206573756163 x16: 6562203020637472 x15: 6320676e69746165 [ 3.258211] x14: 726320746f4e203a x13: 676e697373696d20 x12: 726f2064656c6261 [ 3.259106] x11: 7369642073692039 x10: ffff80008275c0c0 x9 : ffff80008091ebf8 [ 3.260000] x8 : 00000000ffffefff x7 : ffff80008275c0c0 x6 : 80000000fffff000 [ 3.260895] x5 : 000000000000bff4 x4 : 0000000000000000 x3 : ffff000006516ae0 [ 3.261789] x2 : ffff000006516ae0 x1 : 0000000000000000 x0 : 0000000000000000 [ 3.262684] Call trace: [ 3.262991] mtk_drm_crtc_dma_dev_get+0x8/0x18 [ 3.263549] try_to_bring_up_aggregate_device+0x16c/0x1e0 [ 3.264227] __component_add+0xac/0x180 [ 3.264708] component_add+0x1c/0x30 [ 3.265158] mtk_disp_rdma_probe+0x17c/0x270 [ 3.265695] platform_probe+0x70/0xd0 [ 3.266155] really_probe+0x150/0x2c0 [ 3.266615] __driver_probe_device+0x80/0x140 [ 3.267162] driver_probe_device+0x44/0x170 [ 3.267687] __device_attach_driver+0xc0/0x148 [ 3.268245] bus_for_each_drv+0x88/0xf0 [ 3.268727] __device_attach+0xa4/0x198 [ 3.269208] device_initial_probe+0x1c/0x30 [ 3.269732] bus_probe_device+0xb4/0xc0 [ 3.270214] deferred_probe_work_func+0x90/0xd0 [ 3.270783] process_one_work+0x144/0x3a0 [ 3.271289] worker_thread+0x2ac/0x4b8 [ 3.271761] kthread+0xec/0xf8 [ 3.272145] ret_from_fork+0x10/0x20 [ 3.272597] Code: 814f7858 ffff8000 aa1e03e9 d503201f (f9425000) [ 3.273361] ---[ end trace 0000000000000000 ]--- Here's the complete bootlog: https://pastebin.com/raw/SekMYBj4 Any help is where to look is appreciated. >> While the mediatek-dpi driver finds the DP port: >> [ 3.131645] mediatek-dpi 1c113000.dp-intf: Found bridge node: >> /soc/dp-tx@1c600000 >> >> The probing of the eDP is deferred: >> [ 13.289009] platform 1c015000.dp-intf: deferred probe pending >> >> So I don't know why, but to make dp_intf1 work, it seems that dp_intf0 >> must be probed successfully. After this patch, the edp (which is >> connected to the dp_intf1) probe will return with an -ENODEV and >> the previous call to devm_drm_bridge_add() will be rolled back. > > The MediaTek DRM driver uses the component framework, so it waits for > all of its > components to register until it binds them all (which includes both > intf0 and > intf1, unless they're disabled on the DT). Oh with "I don't know why, but to make dp_intf1 work.." I meant the splat above. I figured that dpi won't probe if a dependency is still deferred ;) -michael > It's true that before this patch no panel being found for edp-tx > wouldn't > prevent it to probe, but it really should. > > Thanks, > NĂ­colas > >> >> Before this patch, bridge_add() was called in any case (in the >> error case with next_bridge = NULL) and the mediatek-dpi probed >> like that: >> >> [ 3.121011] mediatek-dpi 1c015000.dp-intf: Found bridge node: >> /soc/edp-tx@1c500000 >> [ 3.122111] mediatek-dpi 1c113000.dp-intf: Found bridge node: >> /soc/dp-tx@1c600000 >> >> Eventually resulting in a framebuffer device: >> [ 4.451081] mediatek-drm mediatek-drm.8.auto: [drm] fb0: >> mediatekdrmfb frame buffer device >> >> >> NB, somehow this series broke the initial display output. I always >> have >> to replug the DisplayPort to get some output. I'll dig deeper into >> that >> later. >> >> .. >> >> > @@ -2519,21 +2553,14 @@ static int mtk_dp_probe(struct platform_device *pdev) >> > return dev_err_probe(dev, mtk_dp->irq, >> > "failed to request dp irq resource\n"); >> > >> > - mtk_dp->next_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 1, 0); >> > - if (IS_ERR(mtk_dp->next_bridge) && >> > - PTR_ERR(mtk_dp->next_bridge) == -ENODEV) >> > - mtk_dp->next_bridge = NULL; >> >> In my case, this branch was taken. >> >> -michael >> >> > - else if (IS_ERR(mtk_dp->next_bridge)) >> > - return dev_err_probe(dev, PTR_ERR(mtk_dp->next_bridge), >> > - "Failed to get bridge\n"); >> > - >> > ret = mtk_dp_dt_parse(mtk_dp, pdev); >> > if (ret) >> > return dev_err_probe(dev, ret, "Failed to parse dt\n"); >> > >> > - drm_dp_aux_init(&mtk_dp->aux); >> > mtk_dp->aux.name = "aux_mtk_dp"; >> > + mtk_dp->aux.dev = dev; >> > mtk_dp->aux.transfer = mtk_dp_aux_transfer; >> > + drm_dp_aux_init(&mtk_dp->aux); >> > >> > spin_lock_init(&mtk_dp->irq_thread_lock); >> > 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 0F1A0C3DA6F for ; Fri, 25 Aug 2023 15:43:49 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-ID:References:In-Reply-To:Subject:Cc:To:From :Date:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=XYi/LCwOwcLnFA2h/445yHzxslBMJ/aAiaD7n42IP+k=; b=nHpdJCUxLB4MRmzFQEB6ewQcor l5lbW7CEgaajjFDJObEAGar1REfgg7qUb3XD1fE8DVwtJeX2LRDPVB4/y4kZOjn+75S8huRBfHPk+ 4+MCutcHhrgbZo3NISNjDAjxer1LMVJmmSo8DnxihBeMumrTaJNRD16rLIVLyklXhi4kENyM1hZv/ f+nQSoY2CyHO/fNfz75XOaMXvaJTMxTgFrvUjzYBDSlScUwRrC044TFJbPi8oO2DLh5WU39aAdnNl 2WFQJmoEe8PaoLCopwMZeJ6B1m6kPhh+eQCN+RA+e8HGFbh4EVLA3run0tEXbkrvl7hCoIIlW92VK MuEboTIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qZYxz-005hT5-0R; Fri, 25 Aug 2023 15:43:19 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qZYxv-005hSj-0q; Fri, 25 Aug 2023 15:43:17 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 78EA860D3D; Fri, 25 Aug 2023 15:43:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7AEAAC433C7; Fri, 25 Aug 2023 15:43:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692978193; bh=G9n/YPFGOVSkbEMJy6OZc/r3PTQEJOCu7MoRuHGRBqQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Y7KI8dqWWKtEC8q2IiKsLvTqqQ7GnFkrnEH23Hw+QAQlKTvGA01ZNoDwsn98W4mgE O2N+gXOxmgQ0WQVSkSYbszV9VMDWETufTkVAjQALTWyR2+EWmUEMT5rU1o5ycIodnW AAsU3VNB5eQF1b4OoJ3Tc1e+I699bsezD/ANKhYLOXBJspIYC02bQUx7AyUqIDA7Ow MY94ukBRbq9Ci1MQJS9GEza4eflcCyYrTp/g3/2nEXisyk8uv+qdAWJZO27u5fH13g qhS/TKQLxOuoQ2o3LnaI+NXxoqklWDcKPZnRTyPTNgi8N//f/Gxa/CyWRAijik+tdL Xsu9rmemZXONQ== MIME-Version: 1.0 Date: Fri, 25 Aug 2023 17:42:59 +0200 From: Michael Walle To: =?UTF-8?Q?N=C3=ADcolas_F=2E_R=2E_A=2E_Prado?= Cc: angelogioacchino.delregno@collabora.com, airlied@gmail.com, amergnat@baylibre.com, chunkuang.hu@kernel.org, ck.hu@mediatek.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org, ehristev@collabora.com, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, matthias.bgg@gmail.com, p.zabel@pengutronix.de, wenst@chromium.org Subject: Re: [PATCH v7 09/11] drm/mediatek: dp: Add support for embedded DisplayPort aux-bus In-Reply-To: <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> References: <20230725073234.55892-10-angelogioacchino.delregno@collabora.com> <20230825120109.3132209-1-mwalle@kernel.org> <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> Message-ID: X-Sender: mwalle@kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230825_084315_393422_0B7B0E54 X-CRM114-Status: GOOD ( 37.04 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTmljb2xhcywKCj4+ID4gRm9yIHRoZSBlRFAgY2FzZSB3ZSBjYW4gc3VwcG9ydCB1c2luZyBh dXgtYnVzIG9uIE1lZGlhVGVrIERQOiB0aGlzCj4+ID4gZ2l2ZXMgdXMgdGhlIHBvc3NpYmlsaXR5 IHRvIGRlY2xhcmUgb3VyIHBhbmVsIGFzIGdlbmVyaWMgInBhbmVsLWVkcCIKPj4gPiB3aGljaCB3 aWxsIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHRoZSB0aW1pbmdzIGFuZCBhdmFpbGFibGUgbW9k ZXMKPj4gPiB2aWEgdGhlIEVESUQgdGhhdCB3ZSByZWFkIGZyb20gaXQuCj4+ID4KPj4gPiBUbyBk byB0aGlzLCBtb3ZlIHRoZSBwYW5lbCBwYXJzaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHByb2JlIGZ1 bmN0aW9uCj4+ID4gc28gdGhhdCB0aGUgaGFyZHdhcmUgaXMgaW5pdGlhbGl6ZWQgYmVmb3JlaGFu ZCBhbmQgYWxzbyBpbml0aWFsaXplCj4+ID4gdGhlIERQVFggQVVYIGJsb2NrIGFuZCBwb3dlciBi b3RoIG9uIGFzLCB3aGVuIHdlIHBvcHVsYXRlIHRoZQo+PiA+IGF1eC1idXMsIHRoZSBwYW5lbCBk cml2ZXIgd2lsbCB0cmlnZ2VyIGFuIEVESUQgcmVhZCB0byBwZXJmb3JtCj4+ID4gcGFuZWwgZGV0 ZWN0aW9uLgo+PiA+Cj4+ID4gTGFzdCBidXQgbm90IGxlYXN0LCBzaW5jZSBub3cgdGhlIEFVWCB0 cmFuc2ZlcnMgY2FuIGhhcHBlbiBpbiB0aGUKPj4gPiBzZXBhcmF0ZWQgYXV4LWJ1cywgaXQgd2Fz IG5lY2Vzc2FyeSB0byBhZGQgYW4gZXhjbHVzaW9uIGZvciB0aGUKPj4gPiBjYWJsZV9wbHVnZ2Vk X2luIGNoZWNrIGluIGBtdGtfZHBfYXV4X3RyYW5zZmVyKClgIGFuZCB0aGUgZWFzaWVzdAo+PiA+ IHdheSB0byBkbyB0aGlzIGlzIHRvIHNpbXBseSBpZ25vcmUgY2hlY2tpbmcgdGhhdCB3aGVuIHRo ZSBicmlkZ2UKPj4gPiB0eXBlIGlzIGVEUC4KPj4gCj4+IFRoaXMgcGF0Y2ggYnJlYWtzIG15IGJv YXJkIGJhc2VkIG9uIHRoZSBNVDgxOTUgd2hpY2ggb25seSBoYXMgb25lCj4+IERpc3BsYXlQb3J0 IG91dHB1dCBwb3J0LiBJIHN1c3BlY3QgaXQgbWlnaHQgYWxzbyBicmVhayB0aGUgCj4+IG10ODE5 NS1jaGVycnkKPj4gYm9hcmQuCj4gCj4gRG8geW91IG1lYW4gdGhhdCB5b3VyIGJvYXJkIGRvZXMg bm90IGhhdmUgYW4gaW50ZXJuYWwgZGlzcGxheSwgb25seSB0aGUgCj4gb25lCj4gb3V0cHV0IHBv cnQ/IElmIHNvLCB3aHkgYXJlIHlvdSBlbmFibGluZyB0aGUgbm9kZXMgZm9yIHRoZSBpbnRlcm5h bCAKPiBkaXNwbGF5IHBhdGgKPiBpbiB5b3VyIGJvYXJkIHNwZWNpZmljIERUPwoKV2VsbCwgdGhh dCBkZXBlbmRzLiBUaGUgYm9hcmQgYWN0dWFsbHkgaGFzIGFuIGVEUCBzb2NrZXQsIGJ1dCBiZWNh dXNlIHdlCmFyZSBhbiBPRU0sIHRoZXJlIG1pZ2h0IGJlIG5vIGRpc3BsYXkgY29ubmVjdGVkIHRv IGl0LiAoQW5kIEkgaGF2ZW4ndAp0cmllZCBpdCB5ZXQpLiBJdCBzaG91bGQgcHJvYmFibHkgZ28g aW50byBhbiBvd24gZGV2aWNlIHRyZWUgb3Igb3ZlcmxheQppZiBpdCBpcyB1c2VkLiBJIGFncmVl LiBCdXQgaXQgbG9va2VkIGxpa2UgaXQgd2FzIGF1dG8tZGV0ZWN0YWJsZSAoaXQKZXZlbiBoYXMg YSBIRFAgcGluIG9uIHRoZSBlRFAgc29ja2V0LCBub3Qgc3VyZSBhYm91dCBpdHMgdXNlIGNhc2Uu LikKCkJ1dCB0aGUgcmVhbCByZWFzb24gSSd2ZSBlbmFibGVkIGl0IHdhcyBiZWNhdXNlIEknbGwg Z2V0IGFuIGtlcm5lbApvb3BzIG90aGVyd2lzZS4gSSB0aG91Z2h0IGl0IG1pZ2h0IGJlIHNvbWUg cXVpcmsgdGhhdCB5b3UnbGwgbmVlZCBib3RoLApiZWNhdXNlIGVEUCB3aWxsIHJlZ2lzdGVyIGV2 ZW4gaWYgdGhlcmVzIG5vIGRpc3BsYXkgLSBhcyB5b3UndmUKbWVudGlvbmVkIGJlbG93LgoKSGVy ZSdzIHRoZSBzcGxhdDoKWyAgICAzLjIzNzA2NF0gbWVkaWF0ZWstZHJtIG1lZGlhdGVrLWRybS4x MC5hdXRvOiBib3VuZCAKMWMxMTAwMDAudnBwLW1lcmdlIChvcHMgbXRrX2Rpc3BfbWVyZ2VfY29t cG9uZW50X29wcykKWyAgICAzLjIzODI3NF0gbWVkaWF0ZWstZHJtIG1lZGlhdGVrLWRybS44LmF1 dG86IE5vdCBjcmVhdGluZyBjcnRjIDAgCmJlY2F1c2UgY29tcG9uZW50IDggaXMgZGlzYWJsZWQg b3IgbWlzc2luZwpbICAgIDMuMjM5NTA0XSBtZWRpYXRlay1kcm0gbWVkaWF0ZWstZHJtLjguYXV0 bzogTm90IGNyZWF0aW5nIGNydGMgMCAKYmVjYXVzZSBjb21wb25lbnQgOSBpcyBkaXNhYmxlZCBv ciBtaXNzaW5nClsgICAgMy4yNDA3NDFdIFVuYWJsZSB0byBoYW5kbGUga2VybmVsIE5VTEwgcG9p bnRlciBkZXJlZmVyZW5jZSBhdCAKdmlydHVhbCBhZGRyZXNzIDAwMDAwMDAwMDAwMDA0YTAKWyAg ICAzLjI0MTg0MV0gTWVtIGFib3J0IGluZm86ClsgICAgMy4yNDIxOTJdICAgRVNSID0gMHgwMDAw MDAwMDk2MDAwMDA0ClsgICAgMy4yNDI2NjJdICAgRUMgPSAweDI1OiBEQUJUIChjdXJyZW50IEVM KSwgSUwgPSAzMiBiaXRzClsgICAgMy4yNDMzMjhdICAgU0VUID0gMCwgRm5WID0gMApbICAgIDMu MjQzNzEwXSAgIEVBID0gMCwgUzFQVFcgPSAwClsgICAgMy4yNDQxMDRdICAgRlNDID0gMHgwNDog bGV2ZWwgMCB0cmFuc2xhdGlvbiBmYXVsdApbICAgIDMuMjQ0NzE3XSBEYXRhIGFib3J0IGluZm86 ClsgICAgMy4yNDUwNzhdICAgSVNWID0gMCwgSVNTID0gMHgwMDAwMDAwNCwgSVNTMiA9IDB4MDAw MDAwMDAKWyAgICAzLjI0NTc2NV0gICBDTSA9IDAsIFduUiA9IDAsIFRuRCA9IDAsIFRhZ0FjY2Vz cyA9IDAKWyAgICAzLjI0NjM5OF0gICBHQ1MgPSAwLCBPdmVybGF5ID0gMCwgRGlydHlCaXQgPSAw LCBYcyA9IDAKWyAgICAzLjI0NzA2M10gWzAwMDAwMDAwMDAwMDA0YTBdIHVzZXIgYWRkcmVzcyBi dXQgYWN0aXZlX21tIGlzIHN3YXBwZXIKWyAgICAzLjI0Nzg2MF0gSW50ZXJuYWwgZXJyb3I6IE9v cHM6IDAwMDAwMDAwOTYwMDAwMDQgWyMxXSBTTVAKWyAgICAzLjI0ODU1OV0gTW9kdWxlcyBsaW5r ZWQgaW46ClsgICAgMy4yNDg5NDVdIENQVTogNCBQSUQ6IDExIENvbW06IGt3b3JrZXIvdTE2OjAg Tm90IHRhaW50ZWQgCjYuNS4wLXJjNy1uZXh0LTIwMjMwODIxKyAjMjIyNQpbICAgIDMuMjQ5OTcw XSBIYXJkd2FyZSBuYW1lOiBLb250cm9uIDMuNSItU0JDLWkxMjAwIChEVCkKWyAgICAzLjI1MDYx NF0gV29ya3F1ZXVlOiBldmVudHNfdW5ib3VuZCBkZWZlcnJlZF9wcm9iZV93b3JrX2Z1bmMKWyAg ICAzLjI1MTM0N10gcHN0YXRlOiA2MDQwMDAwOSAoblpDdiBkYWlmICtQQU4gLVVBTyAtVENPIC1E SVQgLVNTQlMgCkJUWVBFPS0tKQpbICAgIDMuMjUyMjIwXSBwYyA6IG10a19kcm1fY3J0Y19kbWFf ZGV2X2dldCsweDgvMHgxOApbICAgIDMuMjUyODI0XSBsciA6IG10a19kcm1fYmluZCsweDQ1OC8w eDU1OApbICAgIDMuMjUzMzI2XSBzcCA6IGZmZmY4MDAwODJiMjNhMjAKWyAgICAzLjI1Mzc0MV0g eDI5OiBmZmZmODAwMDgyYjIzYTIwIHgyODogZmZmZjAwMDAwMmM3ODg4MCB4Mjc6IApmZmZmODAw MDgxNjQ2NmQwClsgICAgMy4yNTQ2MzVdIHgyNjogZmZmZjAwMDAwMmM2ZjAxMCB4MjU6IDAwMDAw MDAwMDAwMDAwMDMgeDI0OiAKMDAwMDAwMDAwMDAwMDAwMApbICAgIDMuMjU1NTI5XSB4MjM6IGZm ZmYwMDAwMDJjNzg4ODAgeDIyOiAwMDAwMDAwMDAwMDAwMDAyIHgyMTogCjAwMDAwMDAwMDAwMDAw MDAKWyAgICAzLjI1NjQyM10geDIwOiBmZmZmMDAwMDA2NTE2ODAwIHgxOTogZmZmZjAwMDAwMmM3 ODg4MCB4MTg6IApmZmZmZmZmZmZmZmZmZmZmClsgICAgMy4yNTczMTddIHgxNzogNmY2MzIwNjU3 Mzc1NjE2MyB4MTY6IDY1NjIyMDMwMjA2Mzc0NzIgeDE1OiAKNjMyMDY3NmU2OTc0NjE2NQpbICAg IDMuMjU4MjExXSB4MTQ6IDcyNjMyMDc0NmY0ZTIwM2EgeDEzOiA2NzZlNjk3MzczNjk2ZDIwIHgx MjogCjcyNmYyMDY0NjU2YzYyNjEKWyAgICAzLjI1OTEwNl0geDExOiA3MzY5NjQyMDczNjkyMDM5 IHgxMDogZmZmZjgwMDA4Mjc1YzBjMCB4OSA6IApmZmZmODAwMDgwOTFlYmY4ClsgICAgMy4yNjAw MDBdIHg4IDogMDAwMDAwMDBmZmZmZWZmZiB4NyA6IGZmZmY4MDAwODI3NWMwYzAgeDYgOiAKODAw MDAwMDBmZmZmZjAwMApbICAgIDMuMjYwODk1XSB4NSA6IDAwMDAwMDAwMDAwMGJmZjQgeDQgOiAw MDAwMDAwMDAwMDAwMDAwIHgzIDogCmZmZmYwMDAwMDY1MTZhZTAKWyAgICAzLjI2MTc4OV0geDIg OiBmZmZmMDAwMDA2NTE2YWUwIHgxIDogMDAwMDAwMDAwMDAwMDAwMCB4MCA6IAowMDAwMDAwMDAw MDAwMDAwClsgICAgMy4yNjI2ODRdIENhbGwgdHJhY2U6ClsgICAgMy4yNjI5OTFdICBtdGtfZHJt X2NydGNfZG1hX2Rldl9nZXQrMHg4LzB4MTgKWyAgICAzLjI2MzU0OV0gIHRyeV90b19icmluZ191 cF9hZ2dyZWdhdGVfZGV2aWNlKzB4MTZjLzB4MWUwClsgICAgMy4yNjQyMjddICBfX2NvbXBvbmVu dF9hZGQrMHhhYy8weDE4MApbICAgIDMuMjY0NzA4XSAgY29tcG9uZW50X2FkZCsweDFjLzB4MzAK WyAgICAzLjI2NTE1OF0gIG10a19kaXNwX3JkbWFfcHJvYmUrMHgxN2MvMHgyNzAKWyAgICAzLjI2 NTY5NV0gIHBsYXRmb3JtX3Byb2JlKzB4NzAvMHhkMApbICAgIDMuMjY2MTU1XSAgcmVhbGx5X3By b2JlKzB4MTUwLzB4MmMwClsgICAgMy4yNjY2MTVdICBfX2RyaXZlcl9wcm9iZV9kZXZpY2UrMHg4 MC8weDE0MApbICAgIDMuMjY3MTYyXSAgZHJpdmVyX3Byb2JlX2RldmljZSsweDQ0LzB4MTcwClsg ICAgMy4yNjc2ODddICBfX2RldmljZV9hdHRhY2hfZHJpdmVyKzB4YzAvMHgxNDgKWyAgICAzLjI2 ODI0NV0gIGJ1c19mb3JfZWFjaF9kcnYrMHg4OC8weGYwClsgICAgMy4yNjg3MjddICBfX2Rldmlj ZV9hdHRhY2grMHhhNC8weDE5OApbICAgIDMuMjY5MjA4XSAgZGV2aWNlX2luaXRpYWxfcHJvYmUr MHgxYy8weDMwClsgICAgMy4yNjk3MzJdICBidXNfcHJvYmVfZGV2aWNlKzB4YjQvMHhjMApbICAg IDMuMjcwMjE0XSAgZGVmZXJyZWRfcHJvYmVfd29ya19mdW5jKzB4OTAvMHhkMApbICAgIDMuMjcw NzgzXSAgcHJvY2Vzc19vbmVfd29yaysweDE0NC8weDNhMApbICAgIDMuMjcxMjg5XSAgd29ya2Vy X3RocmVhZCsweDJhYy8weDRiOApbICAgIDMuMjcxNzYxXSAga3RocmVhZCsweGVjLzB4ZjgKWyAg ICAzLjI3MjE0NV0gIHJldF9mcm9tX2ZvcmsrMHgxMC8weDIwClsgICAgMy4yNzI1OTddIENvZGU6 IDgxNGY3ODU4IGZmZmY4MDAwIGFhMWUwM2U5IGQ1MDMyMDFmIChmOTQyNTAwMCkKWyAgICAzLjI3 MzM2MV0gLS0tWyBlbmQgdHJhY2UgMDAwMDAwMDAwMDAwMDAwMCBdLS0tCgpIZXJlJ3MgdGhlIGNv bXBsZXRlIGJvb3Rsb2c6Cmh0dHBzOi8vcGFzdGViaW4uY29tL3Jhdy9TZWtNWUJqNAoKQW55IGhl bHAgaXMgd2hlcmUgdG8gbG9vayBpcyBhcHByZWNpYXRlZC4KCj4+IFdoaWxlIHRoZSBtZWRpYXRl ay1kcGkgZHJpdmVyIGZpbmRzIHRoZSBEUCBwb3J0Ogo+PiBbICAgIDMuMTMxNjQ1XSBtZWRpYXRl ay1kcGkgMWMxMTMwMDAuZHAtaW50ZjogRm91bmQgYnJpZGdlIG5vZGU6IAo+PiAvc29jL2RwLXR4 QDFjNjAwMDAwCj4+IAo+PiBUaGUgcHJvYmluZyBvZiB0aGUgZURQIGlzIGRlZmVycmVkOgo+PiBb ICAgMTMuMjg5MDA5XSBwbGF0Zm9ybSAxYzAxNTAwMC5kcC1pbnRmOiBkZWZlcnJlZCBwcm9iZSBw ZW5kaW5nCj4+IAo+PiBTbyBJIGRvbid0IGtub3cgd2h5LCBidXQgdG8gbWFrZSBkcF9pbnRmMSB3 b3JrLCBpdCBzZWVtcyB0aGF0IGRwX2ludGYwCj4+IG11c3QgYmUgcHJvYmVkIHN1Y2Nlc3NmdWxs eS4gQWZ0ZXIgdGhpcyBwYXRjaCwgdGhlIGVkcCAod2hpY2ggaXMKPj4gY29ubmVjdGVkIHRvIHRo ZSBkcF9pbnRmMSkgcHJvYmUgd2lsbCByZXR1cm4gd2l0aCBhbiAtRU5PREVWIGFuZAo+PiB0aGUg cHJldmlvdXMgY2FsbCB0byBkZXZtX2RybV9icmlkZ2VfYWRkKCkgd2lsbCBiZSByb2xsZWQgYmFj ay4KPiAKPiBUaGUgTWVkaWFUZWsgRFJNIGRyaXZlciB1c2VzIHRoZSBjb21wb25lbnQgZnJhbWV3 b3JrLCBzbyBpdCB3YWl0cyBmb3IgCj4gYWxsIG9mIGl0cwo+IGNvbXBvbmVudHMgdG8gcmVnaXN0 ZXIgdW50aWwgaXQgYmluZHMgdGhlbSBhbGwgKHdoaWNoIGluY2x1ZGVzIGJvdGggCj4gaW50ZjAg YW5kCj4gaW50ZjEsIHVubGVzcyB0aGV5J3JlIGRpc2FibGVkIG9uIHRoZSBEVCkuCgpPaCB3aXRo ICJJIGRvbid0IGtub3cgd2h5LCBidXQgdG8gbWFrZSBkcF9pbnRmMSB3b3JrLi4iIEkgbWVhbnQg dGhlIApzcGxhdAphYm92ZS4gSSBmaWd1cmVkIHRoYXQgZHBpIHdvbid0IHByb2JlIGlmIGEgZGVw ZW5kZW5jeSBpcyBzdGlsbCBkZWZlcnJlZCAKOykKCi1taWNoYWVsCgo+IEl0J3MgdHJ1ZSB0aGF0 IGJlZm9yZSB0aGlzIHBhdGNoIG5vIHBhbmVsIGJlaW5nIGZvdW5kIGZvciBlZHAtdHggCj4gd291 bGRuJ3QKPiBwcmV2ZW50IGl0IHRvIHByb2JlLCBidXQgaXQgcmVhbGx5IHNob3VsZC4KPiAKPiBU aGFua3MsCj4gTsOtY29sYXMKPiAKPj4gCj4+IEJlZm9yZSB0aGlzIHBhdGNoLCBicmlkZ2VfYWRk KCkgd2FzIGNhbGxlZCBpbiBhbnkgY2FzZSAoaW4gdGhlCj4+IGVycm9yIGNhc2Ugd2l0aCBuZXh0 X2JyaWRnZSA9IE5VTEwpIGFuZCB0aGUgbWVkaWF0ZWstZHBpIHByb2JlZAo+PiBsaWtlIHRoYXQ6 Cj4+IAo+PiBbICAgIDMuMTIxMDExXSBtZWRpYXRlay1kcGkgMWMwMTUwMDAuZHAtaW50ZjogRm91 bmQgYnJpZGdlIG5vZGU6IAo+PiAvc29jL2VkcC10eEAxYzUwMDAwMAo+PiBbICAgIDMuMTIyMTEx XSBtZWRpYXRlay1kcGkgMWMxMTMwMDAuZHAtaW50ZjogRm91bmQgYnJpZGdlIG5vZGU6IAo+PiAv c29jL2RwLXR4QDFjNjAwMDAwCj4+IAo+PiBFdmVudHVhbGx5IHJlc3VsdGluZyBpbiBhIGZyYW1l YnVmZmVyIGRldmljZToKPj4gWyAgICA0LjQ1MTA4MV0gbWVkaWF0ZWstZHJtIG1lZGlhdGVrLWRy bS44LmF1dG86IFtkcm1dIGZiMDogCj4+IG1lZGlhdGVrZHJtZmIgZnJhbWUgYnVmZmVyIGRldmlj ZQo+PiAKPj4gCj4+IE5CLCBzb21laG93IHRoaXMgc2VyaWVzIGJyb2tlIHRoZSBpbml0aWFsIGRp c3BsYXkgb3V0cHV0LiBJIGFsd2F5cyAKPj4gaGF2ZQo+PiB0byByZXBsdWcgdGhlIERpc3BsYXlQ b3J0IHRvIGdldCBzb21lIG91dHB1dC4gSSdsbCBkaWcgZGVlcGVyIGludG8gCj4+IHRoYXQKPj4g bGF0ZXIuCj4+IAo+PiAuLgo+PiAKPj4gPiBAQCAtMjUxOSwyMSArMjU1MywxNCBAQCBzdGF0aWMg aW50IG10a19kcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiA+ICAJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgbXRrX2RwLT5pcnEsCj4+ID4gIAkJCQkgICAgICJmYWls ZWQgdG8gcmVxdWVzdCBkcCBpcnEgcmVzb3VyY2VcbiIpOwo+PiA+Cj4+ID4gLQltdGtfZHAtPm5l eHRfYnJpZGdlID0gZGV2bV9kcm1fb2ZfZ2V0X2JyaWRnZShkZXYsIGRldi0+b2Zfbm9kZSwgMSwg MCk7Cj4+ID4gLQlpZiAoSVNfRVJSKG10a19kcC0+bmV4dF9icmlkZ2UpICYmCj4+ID4gLQkgICAg UFRSX0VSUihtdGtfZHAtPm5leHRfYnJpZGdlKSA9PSAtRU5PREVWKQo+PiA+IC0JCW10a19kcC0+ bmV4dF9icmlkZ2UgPSBOVUxMOwo+PiAKPj4gSW4gbXkgY2FzZSwgdGhpcyBicmFuY2ggd2FzIHRh a2VuLgo+PiAKPj4gLW1pY2hhZWwKPj4gCj4+ID4gLQllbHNlIGlmIChJU19FUlIobXRrX2RwLT5u ZXh0X2JyaWRnZSkpCj4+ID4gLQkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKG10 a19kcC0+bmV4dF9icmlkZ2UpLAo+PiA+IC0JCQkJICAgICAiRmFpbGVkIHRvIGdldCBicmlkZ2Vc biIpOwo+PiA+IC0KPj4gPiAgCXJldCA9IG10a19kcF9kdF9wYXJzZShtdGtfZHAsIHBkZXYpOwo+ PiA+ICAJaWYgKHJldCkKPj4gPiAgCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZh aWxlZCB0byBwYXJzZSBkdFxuIik7Cj4+ID4KPj4gPiAtCWRybV9kcF9hdXhfaW5pdCgmbXRrX2Rw LT5hdXgpOwo+PiA+ICAJbXRrX2RwLT5hdXgubmFtZSA9ICJhdXhfbXRrX2RwIjsKPj4gPiArCW10 a19kcC0+YXV4LmRldiA9IGRldjsKPj4gPiAgCW10a19kcC0+YXV4LnRyYW5zZmVyID0gbXRrX2Rw X2F1eF90cmFuc2ZlcjsKPj4gPiArCWRybV9kcF9hdXhfaW5pdCgmbXRrX2RwLT5hdXgpOwo+PiA+ Cj4+ID4gIAlzcGluX2xvY2tfaW5pdCgmbXRrX2RwLT5pcnFfdGhyZWFkX2xvY2spOwo+PiA+Cgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg== 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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 C2B8BC3DA6F for ; Fri, 25 Aug 2023 15:43:18 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 53C1110E6BC; Fri, 25 Aug 2023 15:43:17 +0000 (UTC) Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by gabe.freedesktop.org (Postfix) with ESMTPS id A78B010E6BC for ; Fri, 25 Aug 2023 15:43:15 +0000 (UTC) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 78EA860D3D; Fri, 25 Aug 2023 15:43:14 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7AEAAC433C7; Fri, 25 Aug 2023 15:43:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692978193; bh=G9n/YPFGOVSkbEMJy6OZc/r3PTQEJOCu7MoRuHGRBqQ=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=Y7KI8dqWWKtEC8q2IiKsLvTqqQ7GnFkrnEH23Hw+QAQlKTvGA01ZNoDwsn98W4mgE O2N+gXOxmgQ0WQVSkSYbszV9VMDWETufTkVAjQALTWyR2+EWmUEMT5rU1o5ycIodnW AAsU3VNB5eQF1b4OoJ3Tc1e+I699bsezD/ANKhYLOXBJspIYC02bQUx7AyUqIDA7Ow MY94ukBRbq9Ci1MQJS9GEza4eflcCyYrTp/g3/2nEXisyk8uv+qdAWJZO27u5fH13g qhS/TKQLxOuoQ2o3LnaI+NXxoqklWDcKPZnRTyPTNgi8N//f/Gxa/CyWRAijik+tdL Xsu9rmemZXONQ== MIME-Version: 1.0 Date: Fri, 25 Aug 2023 17:42:59 +0200 From: Michael Walle To: =?UTF-8?Q?N=C3=ADcolas_F=2E_R=2E_A=2E_Prado?= Subject: Re: [PATCH v7 09/11] drm/mediatek: dp: Add support for embedded DisplayPort aux-bus In-Reply-To: <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> References: <20230725073234.55892-10-angelogioacchino.delregno@collabora.com> <20230825120109.3132209-1-mwalle@kernel.org> <5b438dba-9b85-4448-bc89-08a11ddb822a@notapiano> Message-ID: X-Sender: mwalle@kernel.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: chunkuang.hu@kernel.org, amergnat@baylibre.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, matthias.bgg@gmail.com, linux-mediatek@lists.infradead.org, ehristev@collabora.com, wenst@chromium.org, kernel@collabora.com, linux-arm-kernel@lists.infradead.org, angelogioacchino.delregno@collabora.com Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Nicolas, >> > For the eDP case we can support using aux-bus on MediaTek DP: this >> > gives us the possibility to declare our panel as generic "panel-edp" >> > which will automatically configure the timings and available modes >> > via the EDID that we read from it. >> > >> > To do this, move the panel parsing at the end of the probe function >> > so that the hardware is initialized beforehand and also initialize >> > the DPTX AUX block and power both on as, when we populate the >> > aux-bus, the panel driver will trigger an EDID read to perform >> > panel detection. >> > >> > Last but not least, since now the AUX transfers can happen in the >> > separated aux-bus, it was necessary to add an exclusion for the >> > cable_plugged_in check in `mtk_dp_aux_transfer()` and the easiest >> > way to do this is to simply ignore checking that when the bridge >> > type is eDP. >> >> This patch breaks my board based on the MT8195 which only has one >> DisplayPort output port. I suspect it might also break the >> mt8195-cherry >> board. > > Do you mean that your board does not have an internal display, only the > one > output port? If so, why are you enabling the nodes for the internal > display path > in your board specific DT? Well, that depends. The board actually has an eDP socket, but because we are an OEM, there might be no display connected to it. (And I haven't tried it yet). It should probably go into an own device tree or overlay if it is used. I agree. But it looked like it was auto-detectable (it even has a HDP pin on the eDP socket, not sure about its use case..) But the real reason I've enabled it was because I'll get an kernel oops otherwise. I thought it might be some quirk that you'll need both, because eDP will register even if theres no display - as you've mentioned below. Here's the splat: [ 3.237064] mediatek-drm mediatek-drm.10.auto: bound 1c110000.vpp-merge (ops mtk_disp_merge_component_ops) [ 3.238274] mediatek-drm mediatek-drm.8.auto: Not creating crtc 0 because component 8 is disabled or missing [ 3.239504] mediatek-drm mediatek-drm.8.auto: Not creating crtc 0 because component 9 is disabled or missing [ 3.240741] Unable to handle kernel NULL pointer dereference at virtual address 00000000000004a0 [ 3.241841] Mem abort info: [ 3.242192] ESR = 0x0000000096000004 [ 3.242662] EC = 0x25: DABT (current EL), IL = 32 bits [ 3.243328] SET = 0, FnV = 0 [ 3.243710] EA = 0, S1PTW = 0 [ 3.244104] FSC = 0x04: level 0 translation fault [ 3.244717] Data abort info: [ 3.245078] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 [ 3.245765] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 3.246398] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 3.247063] [00000000000004a0] user address but active_mm is swapper [ 3.247860] Internal error: Oops: 0000000096000004 [#1] SMP [ 3.248559] Modules linked in: [ 3.248945] CPU: 4 PID: 11 Comm: kworker/u16:0 Not tainted 6.5.0-rc7-next-20230821+ #2225 [ 3.249970] Hardware name: Kontron 3.5"-SBC-i1200 (DT) [ 3.250614] Workqueue: events_unbound deferred_probe_work_func [ 3.251347] pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 3.252220] pc : mtk_drm_crtc_dma_dev_get+0x8/0x18 [ 3.252824] lr : mtk_drm_bind+0x458/0x558 [ 3.253326] sp : ffff800082b23a20 [ 3.253741] x29: ffff800082b23a20 x28: ffff000002c78880 x27: ffff8000816466d0 [ 3.254635] x26: ffff000002c6f010 x25: 0000000000000003 x24: 0000000000000000 [ 3.255529] x23: ffff000002c78880 x22: 0000000000000002 x21: 0000000000000000 [ 3.256423] x20: ffff000006516800 x19: ffff000002c78880 x18: ffffffffffffffff [ 3.257317] x17: 6f63206573756163 x16: 6562203020637472 x15: 6320676e69746165 [ 3.258211] x14: 726320746f4e203a x13: 676e697373696d20 x12: 726f2064656c6261 [ 3.259106] x11: 7369642073692039 x10: ffff80008275c0c0 x9 : ffff80008091ebf8 [ 3.260000] x8 : 00000000ffffefff x7 : ffff80008275c0c0 x6 : 80000000fffff000 [ 3.260895] x5 : 000000000000bff4 x4 : 0000000000000000 x3 : ffff000006516ae0 [ 3.261789] x2 : ffff000006516ae0 x1 : 0000000000000000 x0 : 0000000000000000 [ 3.262684] Call trace: [ 3.262991] mtk_drm_crtc_dma_dev_get+0x8/0x18 [ 3.263549] try_to_bring_up_aggregate_device+0x16c/0x1e0 [ 3.264227] __component_add+0xac/0x180 [ 3.264708] component_add+0x1c/0x30 [ 3.265158] mtk_disp_rdma_probe+0x17c/0x270 [ 3.265695] platform_probe+0x70/0xd0 [ 3.266155] really_probe+0x150/0x2c0 [ 3.266615] __driver_probe_device+0x80/0x140 [ 3.267162] driver_probe_device+0x44/0x170 [ 3.267687] __device_attach_driver+0xc0/0x148 [ 3.268245] bus_for_each_drv+0x88/0xf0 [ 3.268727] __device_attach+0xa4/0x198 [ 3.269208] device_initial_probe+0x1c/0x30 [ 3.269732] bus_probe_device+0xb4/0xc0 [ 3.270214] deferred_probe_work_func+0x90/0xd0 [ 3.270783] process_one_work+0x144/0x3a0 [ 3.271289] worker_thread+0x2ac/0x4b8 [ 3.271761] kthread+0xec/0xf8 [ 3.272145] ret_from_fork+0x10/0x20 [ 3.272597] Code: 814f7858 ffff8000 aa1e03e9 d503201f (f9425000) [ 3.273361] ---[ end trace 0000000000000000 ]--- Here's the complete bootlog: https://pastebin.com/raw/SekMYBj4 Any help is where to look is appreciated. >> While the mediatek-dpi driver finds the DP port: >> [ 3.131645] mediatek-dpi 1c113000.dp-intf: Found bridge node: >> /soc/dp-tx@1c600000 >> >> The probing of the eDP is deferred: >> [ 13.289009] platform 1c015000.dp-intf: deferred probe pending >> >> So I don't know why, but to make dp_intf1 work, it seems that dp_intf0 >> must be probed successfully. After this patch, the edp (which is >> connected to the dp_intf1) probe will return with an -ENODEV and >> the previous call to devm_drm_bridge_add() will be rolled back. > > The MediaTek DRM driver uses the component framework, so it waits for > all of its > components to register until it binds them all (which includes both > intf0 and > intf1, unless they're disabled on the DT). Oh with "I don't know why, but to make dp_intf1 work.." I meant the splat above. I figured that dpi won't probe if a dependency is still deferred ;) -michael > It's true that before this patch no panel being found for edp-tx > wouldn't > prevent it to probe, but it really should. > > Thanks, > NĂ­colas > >> >> Before this patch, bridge_add() was called in any case (in the >> error case with next_bridge = NULL) and the mediatek-dpi probed >> like that: >> >> [ 3.121011] mediatek-dpi 1c015000.dp-intf: Found bridge node: >> /soc/edp-tx@1c500000 >> [ 3.122111] mediatek-dpi 1c113000.dp-intf: Found bridge node: >> /soc/dp-tx@1c600000 >> >> Eventually resulting in a framebuffer device: >> [ 4.451081] mediatek-drm mediatek-drm.8.auto: [drm] fb0: >> mediatekdrmfb frame buffer device >> >> >> NB, somehow this series broke the initial display output. I always >> have >> to replug the DisplayPort to get some output. I'll dig deeper into >> that >> later. >> >> .. >> >> > @@ -2519,21 +2553,14 @@ static int mtk_dp_probe(struct platform_device *pdev) >> > return dev_err_probe(dev, mtk_dp->irq, >> > "failed to request dp irq resource\n"); >> > >> > - mtk_dp->next_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 1, 0); >> > - if (IS_ERR(mtk_dp->next_bridge) && >> > - PTR_ERR(mtk_dp->next_bridge) == -ENODEV) >> > - mtk_dp->next_bridge = NULL; >> >> In my case, this branch was taken. >> >> -michael >> >> > - else if (IS_ERR(mtk_dp->next_bridge)) >> > - return dev_err_probe(dev, PTR_ERR(mtk_dp->next_bridge), >> > - "Failed to get bridge\n"); >> > - >> > ret = mtk_dp_dt_parse(mtk_dp, pdev); >> > if (ret) >> > return dev_err_probe(dev, ret, "Failed to parse dt\n"); >> > >> > - drm_dp_aux_init(&mtk_dp->aux); >> > mtk_dp->aux.name = "aux_mtk_dp"; >> > + mtk_dp->aux.dev = dev; >> > mtk_dp->aux.transfer = mtk_dp_aux_transfer; >> > + drm_dp_aux_init(&mtk_dp->aux); >> > >> > spin_lock_init(&mtk_dp->irq_thread_lock); >> >