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 X-Spam-Level: X-Spam-Status: No, score=-3.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F07D1C5B576 for ; Sun, 30 Jun 2019 20:36:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BDACD2089C for ; Sun, 30 Jun 2019 20:36:34 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UZNSu2Oc" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726843AbfF3Uge (ORCPT ); Sun, 30 Jun 2019 16:36:34 -0400 Received: from mail-qt1-f195.google.com ([209.85.160.195]:33760 "EHLO mail-qt1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726669AbfF3Ugd (ORCPT ); Sun, 30 Jun 2019 16:36:33 -0400 Received: by mail-qt1-f195.google.com with SMTP id h24so9492169qto.0; Sun, 30 Jun 2019 13:36:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WzMoDY2PVdsaZxFUKIEpPbUDj5ALelERAN3KJa8FN/g=; b=UZNSu2Oc32IchdcgBkZBLJZf2WcpYM2hi5A6sV0emvQLkxDtWCGnoNRGiNzSE0t4pa YIX3DjFpX/187JCvcH1aeMTVrjNYEnxKR58L33zl3vThrzv67djM6PvwI90+47wGuhEa AMfyyrKD10l76y5uNo+x5Pt2BI6oc9RQILmeAW6fyaYDgvp5TtgANjRtoVgr8bCnA+Ix Kg1aBL9B19wcj4yz1RUKpj5dPIN9vSU0XUDtQQ9Yl+ZDdhvtj2xRRS7MBHIsCtBl7nMc p78dsh3opbJdC7eF6/BFdoRs94qJ7VzmXmZkD8a/7676iDcxhH66XfPj5lzVhrB+2s8U PCOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=WzMoDY2PVdsaZxFUKIEpPbUDj5ALelERAN3KJa8FN/g=; b=k6BVe3sFlsJcW37jVKgbb7kyVvIkrQGIakgKVhriOU12HpLyZlU56e0OarV4mwq2qv LUorY2bPiqZUM0xJwR94y7VXqBTUw7+NHlN3igRdBK4j+qHQzbbq5NohxweVAxl/Edh6 SGHzkvTgag9gcLzXBBcB0oXN59/b815VPmA3got1+6vAwLwdRNNhjN6OnWGKAEV21gE+ p8qh0bTDilZQb+ZsUHSoErwCHjNBqcQs43dLsVzDw9nFLjlzb5irenQJNyPyTGJPz2AB CeI8HDLzYJvsg+d4XvhKXVjS4RMYvG/xttMvhKANy6kxQ3XdNT0SSKLBZko99HUB3k/e HP0Q== X-Gm-Message-State: APjAAAUYTJPuq2x2fXnHK0DCNXmxvV3iI6GwJxmSN2P3k1i0O0+6zh54 GzwbAlPQBShfHX9nPy6n7T4= X-Google-Smtp-Source: APXvYqwQfaHdQ/vGbGlCFGNupx1trzPU/pHEUuoPA5ez15XzPmvs8A2wjIpUozB0pTNRCtr8UHzWUA== X-Received: by 2002:ac8:2971:: with SMTP id z46mr17115175qtz.322.1561926992481; Sun, 30 Jun 2019 13:36:32 -0700 (PDT) Received: from localhost ([2601:184:4780:7861:5010:5849:d76d:b714]) by smtp.gmail.com with ESMTPSA id j2sm4167172qtb.89.2019.06.30.13.36.31 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Sun, 30 Jun 2019 13:36:31 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: freedreno@lists.freedesktop.org, aarch64-laptops@lists.linaro.org, Rob Clark , Ard Biesheuvel , Catalin Marinas , devicetree@vger.kernel.org (open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS), Ingo Molnar , Julien Thierry , Laurent Pinchart , linux-efi@vger.kernel.org (open list:EXTENSIBLE FIRMWARE INTERFACE (EFI)), linux-kernel@vger.kernel.org (open list), Lukas Wunner , Steve Capper , Will Deacon Subject: [PATCH 0/4] drm+dt+efi: support devices with multiple possible panels Date: Sun, 30 Jun 2019 13:36:04 -0700 Message-Id: <20190630203614.5290-1-robdclark@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org From: Rob Clark Now that we can deal gracefully with bootloader (firmware) initialized display on aarch64 laptops[1], the next step is to deal with the fact that the same model of laptop can have one of multiple different panels. (For the yoga c630 that I have, I know of at least two possible panels, there might be a third.) This is actually a scenario that comes up frequently in phones and tablets as well, so it is useful to have an upstream solution for this. The basic idea is to add a 'panel-id' property in dt chosen node, and use that to pick the endpoint we look at when loading the panel driver, e.g. / { chosen { panel-id = <0xc4>; }; ivo_panel { compatible = "ivo,m133nwf4-r0"; power-supply = <&vlcm_3v3>; no-hpd; ports { port { ivo_panel_in_edp: endpoint { remote-endpoint = <&sn65dsi86_out_ivo>; }; }; }; }; boe_panel { compatible = "boe,nv133fhm-n61"; power-supply = <&vlcm_3v3>; no-hpd; ports { port { boe_panel_in_edp: endpoint { remote-endpoint = <&sn65dsi86_out_boe>; }; }; }; }; sn65dsi86: bridge@2c { compatible = "ti,sn65dsi86"; ... ports { #address-cells = <1>; #size-cells = <0>; ... port@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; endpoint@c4 { reg = <0xc4>; remote-endpoint = <&boe_panel_in_edp>; }; endpoint@c5 { reg = <0xc5>; remote-endpoint = <&ivo_panel_in_edp>; }; }; }; } }; Note that the panel-id is potentially a sparse-int. The values I've seen so far on aarch64 laptops are: * 0xc2 * 0xc3 * 0xc4 * 0xc5 * 0x8011 * 0x8012 * 0x8055 * 0x8056 At least on snapdragon aarch64 laptops, they can be any u32 value. However, on these laptops, the bootloader/firmware is not populating the chosen node, but instead providing an "UEFIDisplayInfo" variable, which contains the panel id. Unfortunately EFI variables are only available before ExitBootServices, so the second patch checks for this variable before EBS and populates the /chosen/panel-id variable. [1] https://patchwork.freedesktop.org/series/63001/ Rob Clark (4): dt-bindings: chosen: document panel-id binding efi/libstub: detect panel-id drm: add helper to lookup panel-id drm/bridge: ti-sn65dsi86: use helper to lookup panel-id Documentation/devicetree/bindings/chosen.txt | 69 ++++++++++++++++++++ drivers/firmware/efi/libstub/arm-stub.c | 49 ++++++++++++++ drivers/firmware/efi/libstub/efistub.h | 2 + drivers/firmware/efi/libstub/fdt.c | 9 +++ drivers/gpu/drm/bridge/ti-sn65dsi86.c | 5 +- drivers/gpu/drm/drm_of.c | 21 ++++++ include/drm/drm_of.h | 7 ++ 7 files changed, 160 insertions(+), 2 deletions(-) -- 2.20.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rob Clark Subject: [PATCH 0/4] drm+dt+efi: support devices with multiple possible panels Date: Sun, 30 Jun 2019 13:36:04 -0700 Message-ID: <20190630203614.5290-1-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org, linux-arm-msm@vger.kernel.org Cc: Rob Clark , aarch64-laptops@lists.linaro.org, Julien Thierry , "open list:EXTENSIBLE FIRMWARE INTERFACE EFI" , Will Deacon , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Catalin Marinas , Ard Biesheuvel , open list , Laurent Pinchart , freedreno@lists.freedesktop.org, Ingo Molnar , Steve Capper List-Id: devicetree@vger.kernel.org RnJvbTogUm9iIENsYXJrIDxyb2JkY2xhcmtAY2hyb21pdW0ub3JnPgoKTm93IHRoYXQgd2UgY2Fu IGRlYWwgZ3JhY2VmdWxseSB3aXRoIGJvb3Rsb2FkZXIgKGZpcm13YXJlKSBpbml0aWFsaXplZApk aXNwbGF5IG9uIGFhcmNoNjQgbGFwdG9wc1sxXSwgdGhlIG5leHQgc3RlcCBpcyB0byBkZWFsIHdp dGggdGhlIGZhY3QKdGhhdCB0aGUgc2FtZSBtb2RlbCBvZiBsYXB0b3AgY2FuIGhhdmUgb25lIG9m IG11bHRpcGxlIGRpZmZlcmVudCBwYW5lbHMuCihGb3IgdGhlIHlvZ2EgYzYzMCB0aGF0IEkgaGF2 ZSwgSSBrbm93IG9mIGF0IGxlYXN0IHR3byBwb3NzaWJsZSBwYW5lbHMsCnRoZXJlIG1pZ2h0IGJl IGEgdGhpcmQuKQoKVGhpcyBpcyBhY3R1YWxseSBhIHNjZW5hcmlvIHRoYXQgY29tZXMgdXAgZnJl cXVlbnRseSBpbiBwaG9uZXMgYW5kCnRhYmxldHMgYXMgd2VsbCwgc28gaXQgaXMgdXNlZnVsIHRv IGhhdmUgYW4gdXBzdHJlYW0gc29sdXRpb24gZm9yIHRoaXMuCgpUaGUgYmFzaWMgaWRlYSBpcyB0 byBhZGQgYSAncGFuZWwtaWQnIHByb3BlcnR5IGluIGR0IGNob3NlbiBub2RlLCBhbmQKdXNlIHRo YXQgdG8gcGljayB0aGUgZW5kcG9pbnQgd2UgbG9vayBhdCB3aGVuIGxvYWRpbmcgdGhlIHBhbmVs IGRyaXZlciwKZS5nLgoKLyB7CgljaG9zZW4gewoJCXBhbmVsLWlkID0gPDB4YzQ+OwoJfTsKCglp dm9fcGFuZWwgewoJCWNvbXBhdGlibGUgPSAiaXZvLG0xMzNud2Y0LXIwIjsKCQlwb3dlci1zdXBw bHkgPSA8JnZsY21fM3YzPjsKCQluby1ocGQ7CgoJCXBvcnRzIHsKCQkJcG9ydCB7CgkJCQlpdm9f cGFuZWxfaW5fZWRwOiBlbmRwb2ludCB7CgkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZzbjY1ZHNp ODZfb3V0X2l2bz47CgkJCQl9OwoJCQl9OwoJCX07Cgl9OwoKCWJvZV9wYW5lbCB7CgkJY29tcGF0 aWJsZSA9ICJib2UsbnYxMzNmaG0tbjYxIjsKCQlwb3dlci1zdXBwbHkgPSA8JnZsY21fM3YzPjsK CQluby1ocGQ7CgoJCXBvcnRzIHsKCQkJcG9ydCB7CgkJCQlib2VfcGFuZWxfaW5fZWRwOiBlbmRw b2ludCB7CgkJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZzbjY1ZHNpODZfb3V0X2JvZT47CgkJCQl9 OwoJCQl9OwoJCX07Cgl9OwoKCXNuNjVkc2k4NjogYnJpZGdlQDJjIHsKCQljb21wYXRpYmxlID0g InRpLHNuNjVkc2k4NiI7CgoJCS4uLgoKCQlwb3J0cyB7CgkJCSNhZGRyZXNzLWNlbGxzID0gPDE+ OwoJCQkjc2l6ZS1jZWxscyA9IDwwPjsKCgkJCS4uLgoKCQkJcG9ydEAxIHsKCQkJCSNhZGRyZXNz LWNlbGxzID0gPDE+OwoJCQkJI3NpemUtY2VsbHMgPSA8MD47CgkJCQlyZWcgPSA8MT47CgoJCQkJ ZW5kcG9pbnRAYzQgewoJCQkJCXJlZyA9IDwweGM0PjsKCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8 JmJvZV9wYW5lbF9pbl9lZHA+OwoJCQkJfTsKCgkJCQllbmRwb2ludEBjNSB7CgkJCQkJcmVnID0g PDB4YzU+OwoJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXZvX3BhbmVsX2luX2VkcD47CgkJCQl9 OwoJCQl9OwoJCX07Cgl9Cn07CgpOb3RlIHRoYXQgdGhlIHBhbmVsLWlkIGlzIHBvdGVudGlhbGx5 IGEgc3BhcnNlLWludC4gIFRoZSB2YWx1ZXMgSSd2ZQpzZWVuIHNvIGZhciBvbiBhYXJjaDY0IGxh cHRvcHMgYXJlOgoKICAqIDB4YzIKICAqIDB4YzMKICAqIDB4YzQKICAqIDB4YzUKICAqIDB4ODAx MQogICogMHg4MDEyCiAgKiAweDgwNTUKICAqIDB4ODA1NgoKQXQgbGVhc3Qgb24gc25hcGRyYWdv biBhYXJjaDY0IGxhcHRvcHMsIHRoZXkgY2FuIGJlIGFueSB1MzIgdmFsdWUuCgpIb3dldmVyLCBv biB0aGVzZSBsYXB0b3BzLCB0aGUgYm9vdGxvYWRlci9maXJtd2FyZSBpcyBub3QgcG9wdWxhdGlu ZyB0aGUKY2hvc2VuIG5vZGUsIGJ1dCBpbnN0ZWFkIHByb3ZpZGluZyBhbiAiVUVGSURpc3BsYXlJ bmZvIiB2YXJpYWJsZSwgd2hpY2gKY29udGFpbnMgdGhlIHBhbmVsIGlkLiAgVW5mb3J0dW5hdGVs eSBFRkkgdmFyaWFibGVzIGFyZSBvbmx5IGF2YWlsYWJsZQpiZWZvcmUgRXhpdEJvb3RTZXJ2aWNl cywgc28gdGhlIHNlY29uZCBwYXRjaCBjaGVja3MgZm9yIHRoaXMgdmFyaWFibGUKYmVmb3JlIEVC UyBhbmQgcG9wdWxhdGVzIHRoZSAvY2hvc2VuL3BhbmVsLWlkIHZhcmlhYmxlLgoKWzFdIGh0dHBz Oi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvNjMwMDEvCgpSb2IgQ2xhcmsgKDQp OgogIGR0LWJpbmRpbmdzOiBjaG9zZW46IGRvY3VtZW50IHBhbmVsLWlkIGJpbmRpbmcKICBlZmkv bGlic3R1YjogZGV0ZWN0IHBhbmVsLWlkCiAgZHJtOiBhZGQgaGVscGVyIHRvIGxvb2t1cCBwYW5l bC1pZAogIGRybS9icmlkZ2U6IHRpLXNuNjVkc2k4NjogdXNlIGhlbHBlciB0byBsb29rdXAgcGFu ZWwtaWQKCiBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2hvc2VuLnR4dCB8IDY5 ICsrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2FybS1z dHViLmMgICAgICB8IDQ5ICsrKysrKysrKysrKysrCiBkcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJz dHViL2VmaXN0dWIuaCAgICAgICB8ICAyICsKIGRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIv ZmR0LmMgICAgICAgICAgIHwgIDkgKysrCiBkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNuNjVk c2k4Ni5jICAgICAgICB8ICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX29mLmMgICAgICAgICAg ICAgICAgICAgICB8IDIxICsrKysrKwogaW5jbHVkZS9kcm0vZHJtX29mLmggICAgICAgICAgICAg ICAgICAgICAgICAgfCAgNyArKwogNyBmaWxlcyBjaGFuZ2VkLCAxNjAgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCi0tIAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbA==