Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1357018ybi; Sun, 30 Jun 2019 13:37:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqzcs5QkkBZ3oy0gM1JHGlZjxe/92Srz0Agetrs92oe31NfrrpG+F6Up0Nu3e/rlCLk8sz9x X-Received: by 2002:a17:90a:ad89:: with SMTP id s9mr26885134pjq.41.1561927041305; Sun, 30 Jun 2019 13:37:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561927041; cv=none; d=google.com; s=arc-20160816; b=O8PFkpBuDwt9fab+6Ev/s9XNMmnvO5QBMDzTvyAGjoQwLtZ8UJOlNE3jXPgBg7TEkY 8kuHRju6f7NbEGniovqArTqJ5IioWc9aS5OEUxcXr7fxjIuFTZoNaUKLAvHURzj8wN+n IhMPg52i7I4xpT/uhjOktmWF01ixRXCbpny4UrmJzYsHAV4Tr5JrCr6cPaCH1xh1yyYJ YRZ0QvtZWTIkLKWP+hgHkrYFOcwqLTB+TZYQjxYnrHDCXL/1wlQIcaHE6k6ASmes6P49 MmKghoYRsq0Xun0Bel5GGtrzYBdhv/EsnGUPa+4ZpT3qgjHvnnZ3JzCGpc5+so6tejtA WEcg== 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:cc:to:from:dkim-signature; bh=WzMoDY2PVdsaZxFUKIEpPbUDj5ALelERAN3KJa8FN/g=; b=QQgvt5oNrNZ9mL33SmrD9IHZoU7oft5YFDJzAY7sLReAFlQ7fxBqV0CFOFrGCis9X2 XI4q9QzpU+FHhl/VyPAweShJSeHImHWOIIz30n42Ajnbbdj7mn9sNbnakNsC4xtj6PyB fJG9FFhsO3cIn9TprmI/H04HuInn+so+g90dXtu+HM/JBVW6L09XvM9tg7V0xOn/XQ7e mgNbF4zbLZ4MnHnFrmV/j9knupqbtqwOjlsEaSIu9cUZqvg4nob0CsaGkBY3n3Nu89GT 0OlZhVKWQMHwVJvZn22+T7pomXRBwJYyiV4Vb894YsJT0xwdtX0CuyspWeIzRz7wFjGU zktQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UZNSu2Oc; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e24si7738540pgh.408.2019.06.30.13.36.56; Sun, 30 Jun 2019 13:37:21 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=UZNSu2Oc; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726927AbfF3Uge (ORCPT + 99 others); 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-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-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@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