Received: by 2002:a05:6a10:c604:0:0:0:0 with SMTP id y4csp2470604pxt; Mon, 9 Aug 2021 01:03:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUQ9wLFt8X3uuZCH0CLcBTMrk8xeS9riPd04qL3eLZUtpijCyb9toWalW4rQjB1owfET23 X-Received: by 2002:a05:6402:31ba:: with SMTP id dj26mr28559975edb.252.1628496199738; Mon, 09 Aug 2021 01:03:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1628496199; cv=none; d=google.com; s=arc-20160816; b=D2tG4dfhpElkNMXVGvmr8TPDUu/aFjRI4zGyMNoNZILu0F7AD5L6o0FNoFKDkTdPwr KlvacX2zsP8cK552j/8lTEDpDjEdtFxc5VIz7Ny+Qdc73PzqjKAvYVfZGzz7r57zb1sJ rEQ/f4f5zS9VFQT+bC+MMGAw3Xxe1plLDl8NFf7Af9q1UNMQWWKZYvD4D7XCbaapk3dV nKqCQNy+Yzcn8Ks7HuDriuDl94pZ1nO8UfeTB1/XyvQQZE0RbQtlWr7rEd6UpTPI52eO f9wGIc5h5HNvj/V+T1KL1V5o0Fyi6Idk9FNTofkVZTWXWd/X//FyI40kzLywP1eEc1d9 E4Xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=09liQ8AeWAUmuhsIobyFZpGuppadfA5M/x17fZL+bQA=; b=A2nN/boQJuD4OYlBPE8wD8W8kC+r0uWuHVDk1dsZfYoNhOJuOG3miBHA/u9eWbcFM/ 0y0NPJlFK7x/nbT9hR9zfbeAIK+RTFlGg6knu9k91X3MJqZ3vmvd7S58sDWEV8lVHUjb KBGpQGpammXu4zV/ZSrNAdu/6m1AO0ssBlVm79uchtTejaMHziyDh3xntb1NMOEKHaoz 3Fwfp1y395284afEgymwvpZeSIKv17vfPSGkPVpK+wzwZygUVHZRvm7ePHLaAMyREIbl jodeyIiE1SE2uqoaP3INYwUltBaAmA3WtMiKA5l9Is1+kJh/XDsqqjMI4/RQnoJtAcNZ Qjyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=pV1OHKgO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id du1si3461064ejc.712.2021.08.09.01.02.56; Mon, 09 Aug 2021 01:03:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=pV1OHKgO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233697AbhHIIAj (ORCPT + 99 others); Mon, 9 Aug 2021 04:00:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40068 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233656AbhHIIAi (ORCPT ); Mon, 9 Aug 2021 04:00:38 -0400 Received: from mail-ej1-x635.google.com (mail-ej1-x635.google.com [IPv6:2a00:1450:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2C47C0613CF for ; Mon, 9 Aug 2021 01:00:17 -0700 (PDT) Received: by mail-ej1-x635.google.com with SMTP id z20so4638787ejf.5 for ; Mon, 09 Aug 2021 01:00:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=09liQ8AeWAUmuhsIobyFZpGuppadfA5M/x17fZL+bQA=; b=pV1OHKgOW9VZJOADH0nrKuV28pqphGWMo1FqQ+k8pAtbMrgMntaYxUhcVX6iwluI3M PEh/8S8ZSR9w35cvsZSpmPibWUPJOK4q5GZzIQismOh3LppLqfJwDHW7l8v34L7MDFNY 1zYNNGO957sDyeFEJw97/0piP+XPUXIzEpOMI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=09liQ8AeWAUmuhsIobyFZpGuppadfA5M/x17fZL+bQA=; b=lUSSxX0TWQp6Xs2PoXnb6/V8+DlLxH4ygutS1fm8VluclP49KRm+yAPAV1aLyk6lJP qWL+IrRPYFZbSgS50vZfL+AiRq+5AXVHKeM9yLXY7Co2bQLv2N+ieFhqYmh6Hzid+F1H +vQ1z7JAmJ6qOesE91sNFQlVwAZONgyTWzZskOjK6CkYBnSyfYYAP4p2Cu6SUbNE5T35 UH+ZIi/X+N9/UiT6zOSail1aNo5Y9qtdg5kz+dmFIVybtz4RmILGVxt//vDun/4+jd6b dFhJFIGQjUMq3lEGbd7QpniB/gT/gXVlHYYBy7dJwzrp4pHVBl4cOTktpCvDag4XrJA3 M1cw== X-Gm-Message-State: AOAM530txTGHAwMqpAfa9qurEU6nFDEeYF3840Zm9RbnwBQbGEnhrmVu klDrTek1YXyrqXLawyRh1YGDeNJzbWhO9+8Sg3Xbyw== X-Received: by 2002:a17:907:1691:: with SMTP id hc17mr21800230ejc.522.1628496016327; Mon, 09 Aug 2021 01:00:16 -0700 (PDT) MIME-Version: 1.0 References: <20210728133229.2247965-1-maxime@cerno.tech> In-Reply-To: From: Jagan Teki Date: Mon, 9 Aug 2021 13:30:05 +0530 Message-ID: Subject: Re: [PATCH v2 0/8] drm/bridge: Make panel and bridge probe order consistent To: "a.hajda" Cc: Maxime Ripard , Sam Ravnborg , Daniel Vetter , David Airlie , Thierry Reding , Laurent Pinchart , Maarten Lankhorst , Thomas Zimmermann , Jernej Skrabec , Neil Armstrong , Jonas Karlman , Robert Foss , linux-kernel , dri-devel Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Andrzej, On Wed, Aug 4, 2021 at 7:48 PM a.hajda wrote: > > Hi Maxime, > > I have been busy with other tasks, and I did not follow the list last > time, so sorry for my late response. > > On 28.07.2021 15:32, Maxime Ripard wrote: > > Hi, > > > > We've encountered an issue with the RaspberryPi DSI panel that prevented the > > whole display driver from probing. > > > > The issue is described in detail in the commit 7213246a803f ("drm/vc4: dsi: > > Only register our component once a DSI device is attached"), but the basic idea > > is that since the panel is probed through i2c, there's no synchronization > > between its probe and the registration of the MIPI-DSI host it's attached to. > > > > We initially moved the component framework registration to the MIPI-DSI Host > > attach hook to make sure we register our component only when we have a DSI > > device attached to our MIPI-DSI host, and then use lookup our DSI device in our > > bind hook. > > > > However, all the DSI bridges controlled through i2c are only registering their > > associated DSI device in their bridge attach hook, meaning with our change > > > I guess this is incorrect. I have promoted several times the pattern > that device driver shouldn't expose its interfaces (for example > component_add, drm_panel_add, drm_bridge_add) until it gathers all > required dependencies. In this particular case bridges should defer > probe until DSI bus becomes available. I guess this way the patch you > reverts would work. > > I advised few times this pattern in case of DSI hosts, apparently I > didn't notice the similar issue can appear in case of bridges. Or there > is something I have missed??? Look like Maxime is correct. I2C based DSI bridge will get probe during bridge_attach which usually called from bridge driver bridge_attach call. Non-I2C bridges and DSI panels will get probe during host.attach. We do get similar situation for dw-mipi-dsi bridges, where icn6211 bridge is not I2C-based bridge and it gets probed in host_attach and sn65dsi83 is I2C based bridge and it gets probed in bridge_attach. Here is the simple call trace we have observed with dw-mipi-dsi bridge when all possible DSI device are trying to probe. 1. DSI panels and bridges will invoke the host attach from probe in order to find the panel_or_bridge. chipone_probe() dw_mipi_dsi_host_attach().start dw_mipi_dsi_panel_or_bridge() ...found the panel_or_bridge... ltdc_encoder_init().start dw_mipi_dsi_bridge_attach().start dw_mipi_dsi_host_attach().start chipone_attach(). start chipone_attach(). done dw_mipi_dsi_host_attach().done dw_mipi_dsi_bridge_attach(). done ltdc_encoder_init().done 2. I2C based DSI bridge will invoke the drm_bridge_attach from bridge attach in order to find the panel_or_bridge. ltdc_encoder_init().start dw_mipi_dsi_bridge_attach().start dw_mipi_dsi_panel_or_bridge() ...found the panel_or_bridge... dw_mipi_dsi_host_attach().start sn65dsi83_attach(). start sn65dsi83_attach(). done dw_mipi_dsi_host_attach().done dw_mipi_dsi_bridge_attach(). done ltdc_encoder_init().done It is correct that the I2C-based bridges will attach the host via mipi_dsi_attach in driver bridge API where as it done in probe for Non-I2C bridges and DSI panels. > > Anyway there are already eleven(?) bridge drivers using this pattern. I > wonder if fixing it would be difficult, or if it expose other issues??? > The patches should be quite straightforward - move > of_find_mipi_dsi_host_by_node and mipi_dsi_device_register_full to probe > time. > > Finally I think that if we will not fix these bridge drivers we will > encounter another set of issues with new platforms connecting "DSI host > drivers assuming this pattern" and "i2c/dsi device drivers assuming > pattern already present in the bridges". Agreed, I'm trying to understand the several ways to fix this. Right now I'm trying this on sun6i_mipi_dsi and exynos_drm_dsi. Will let you know for any update and suggestions on the same. Thanks, Jagan.