Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp772576imm; Thu, 6 Sep 2018 09:52:18 -0700 (PDT) X-Google-Smtp-Source: ANB0Vdbl3iv38JTrUayL+el5B3b0EkyfF5g54t1lRA7DjYcNgr4OTl+xo3lPkHXkFfnFS6Dl4FKx X-Received: by 2002:a62:398c:: with SMTP id u12-v6mr3877438pfj.9.1536252738280; Thu, 06 Sep 2018 09:52:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536252738; cv=none; d=google.com; s=arc-20160816; b=vcu8FBXr+GOVXwO4HU6A9oMSjNunwp4Um7i03s3FeEDzLguUEhkJWRFEAmxAVNDURy IK5Za6e0NmHN1hc9RnEbDfME5muhBpcP/SmMTyHtQP4EWzNLngXOvc8kj3F7KaBF0Eqs HznJznOu57HTcH9Oijgc30H/JeI1y0+X7f+JhCZAtxgsJjPpOF0j8DsjLF8UO3Q1ybsy wV6PAyqQ0FY1EYkKthmDgc0+rKB2fX4SQy/ZEGkt+dhGYEYm89gqnNXCrCkL1KQRfwC6 h8Nr4JVNgP1VN/oym+P1PZaEVduYA5pbsc7+aipStA5HAkGyaboaiCW69qPFbrvr+k5Y /MqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:message-id:references :in-reply-to:subject:cc:to:from:date:content-transfer-encoding :mime-version:dkim-signature; bh=ZtMm+q5K0uLBEnCXOndLdPzPHG4bKRNCOaaBo9673O0=; b=0bxcj9Fg+tmGRqWnskpbMFKiMqDjv2VoeNYeD2Tlm5uQ4n8k2IH+n8IDt92a+qeV12 I5LGbOOPnzEqDIcqDvcV0KXIJTU2k9lu+/7nLHOSM3YYyyn6d3pYCvu67IwrpFUESmA+ 6am6DSy4NDkCOlXsGvv8/+udCInqQ76Z+5kcwqj0N+mpHHXht0g51NctXRJ59zE7YX+T NN9vDj9IlvgdEaUKvEFLSSbEYi9JRVeibeIDDwylUkiWPnKAJMQywYieTsbf2uBfapcJ z7hwbjWh+QfJIegUQWckErFe+wYWxNOe2gNy8oH5eOSVQ20CrwaJ1ohkkTWo9Xi+pitv exaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@agner.ch header.s=dkim header.b=g5BE+Kpl; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u13-v6si5650056pgg.263.2018.09.06.09.52.01; Thu, 06 Sep 2018 09:52:18 -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=@agner.ch header.s=dkim header.b=g5BE+Kpl; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728196AbeIFVZO (ORCPT + 99 others); Thu, 6 Sep 2018 17:25:14 -0400 Received: from mail.kmu-office.ch ([178.209.48.109]:46750 "EHLO mail.kmu-office.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727738AbeIFVZO (ORCPT ); Thu, 6 Sep 2018 17:25:14 -0400 Received: from webmail.kmu-office.ch (unknown [IPv6:2a02:418:6a02::a3]) by mail.kmu-office.ch (Postfix) with ESMTPSA id 5C8725C08AC; Thu, 6 Sep 2018 18:48:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=agner.ch; s=dkim; t=1536252531; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZtMm+q5K0uLBEnCXOndLdPzPHG4bKRNCOaaBo9673O0=; b=g5BE+KplTNOf7ssvA+uBj9kLjMLvJJJpbxuYO/WYQ73KwKaC40ecrwinyYu87pu2FkM1fz 0UfA1hiziTocYtunf8e8dRCOtDw8F3JX2EpUniolWcXQCKllAin/qWjpMLt0sMQQqKUAyQ CEyyo2qZ6vk8GkEVcga8AlJeaT/LR94= MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Date: Thu, 06 Sep 2018 09:48:51 -0700 From: Stefan Agner To: Laurent Pinchart Cc: Linus Walleij , Dave Airlie , Rob Herring , Mark Rutland , Shawn Guo , Sascha Hauer , Philipp Zabel , Sascha Hauer , Fabio Estevam , NXP Linux Team , Archit Taneja , Andrzej Hajda , Gustavo Padovan , Maarten Lankhorst , sean@poorly.run, Marcel Ziswiler , max.krummenacher@toradex.com, "open list:DRM PANEL DRIVERS" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Linux ARM , linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/6] drm/bridge: use bus flags in bridge timings In-Reply-To: <10044412.4MiZRujKJI@avalon> References: <20180905052113.21262-1-stefan@agner.ch> <10044412.4MiZRujKJI@avalon> Message-ID: X-Sender: stefan@agner.ch User-Agent: Roundcube Webmail/1.3.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06.09.2018 05:25, Laurent Pinchart wrote: > Hi Linus, > > On Thursday, 6 September 2018 14:07:41 EEST Linus Walleij wrote: >> On Wed, Sep 5, 2018 at 8:32 PM Stefan Agner wrote: >> > On 05.09.2018 00:44, Laurent Pinchart wrote: >> > >> > Good point! I actually really don't like that we use the same flags here >> > but from a different perspective. Especially since the flags defines >> > document things differently: >> > >> > /* drive data on pos. edge */ >> > #define DRM_BUS_FLAG_PIXDATA_POSEDGE (1<<2) >> > /* drive data on neg. edge */ >> > #define DRM_BUS_FLAG_PIXDATA_NEGEDGE (1<<3) >> >> Maybe a stupid comment from my side, but can't we just change the >> documentation to match the usecases? >> >> /* Trigger pixel data latch on positive edge */ >> #define DRM_BUS_FLAG_PIXDATA_POSEDGE (1<<2) > > The flags are used for the drm_connector bus_flags field, and really mean > driving on the positive/negative edges. We this can't change their meaning > like this. > >> > Using the opposite perspective would also need translation in crtc >> > drivers... So far no driver uses sampling_edge. >> > >> > I would prefer if we always use the meaning as documented by the flags. >> > >> > I guess we would need to convert DRM_BUS_FLAG_PIXDATA_POSEDGE -> >> > DRM_BUS_FLAG_PIXDATA_NEGEDGE. >> > >> > Linus Walleij, you added sampling edge, any thoughts? >> >> I just thought it was generally useful to have triggering edge encoded >> into the bridge as it makes it clear that this edge is something >> that is a delayed version of the driving edge which is subject to >> clock skew caused by the speed of electrons in silicon and >> copper and slew rate caused by parasitic capacitance. > > I agree that we need both the driving and sampling edge. In many case they > will be opposite, and providing some kind of appropriate defaults in APIs is > fine by me, but we need a way to specify both when needed. We do have pixel clock flags for displays, but also they are actually controller oriented: https://elixir.bootlin.com/linux/latest/source/include/video/display_timing.h#L15 I guess having different flags to denote driving and sampling edge independently would be ideal. But then, is there really a use case where it wouldn't be the exact opposite? The other bus flags are actually fine as is. I suggest to just stick with the bus flags as we have them now, at least for now. Alternatively, we could provide "consumer/bridge" oriented flags which use the same bit and just are the opposite of the controller oriented flags, e.g.: /* drive data on pos. edge */ #define DRM_BUS_FLAG_PIXDATA_POSEDGE (1<<2) /* drive data on neg. edge */ #define DRM_BUS_FLAG_PIXDATA_NEGEDGE (1<<3) /* sample data on neg. edge */ #define DRM_BUS_FLAG_PIXDATA_SAMPLE_NEGEDGE (1<<2) /* sample data on pos. edge */ #define DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE (1<<3) -- Stefan