Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4589771ybb; Tue, 7 Apr 2020 10:22:47 -0700 (PDT) X-Google-Smtp-Source: APiQypJoKlvBzllFemAc8wOyZ8Dm9J1SW5obVjT8Zw8Gs1sicb2jowWv/aIenD5zLBpdoW4TgbH3 X-Received: by 2002:a4a:2cc6:: with SMTP id o189mr2800141ooo.20.1586280167137; Tue, 07 Apr 2020 10:22:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586280167; cv=none; d=google.com; s=arc-20160816; b=caR9SP8F+Rp8+/RWy70+WF3Rjcc/MQTyOlLLkxUV55EIZDs9aCBbzfM8QJn1B/Pj3J u/lkIHaY6hECqJgLaQduW/Pd2QP+bxT1L+dWtnlCOxxSETP8UpAqwCP9DGisoLbvHIFt 1a1ULWkAReiD7ysAdZFXWONpKAEHDnu3HcZAT2hDbC1D0MsoCafjI92MY1Ba30Ha/xLU 4SZnEadHXOi4wTcc0g5TKIaWm8MhY1DdcrySJRKbmzfoMjVz6nYz9StrXJoVtXm6bNmo EWyvoq9bcJMInglHZbN1G0IrVUPU1GZiVk6dl3952L9sUi54AUstyVy6B675zYHa/0FF nvhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=XzFdEhyzy1KvqGJRVsravoPsi5R2NLyENn3iDSxrRgk=; b=vzWFzNZE8lqIHj641aezp8ypolnQwwcMISHeAkjEhwo41APAXpJGLttyhgsn9VgKOp 7NLepj+zOtEpQVdbd92QCpOJ6MdLfmL8/gOJIAsjHTmaswiw4vXluZ4/XaQUetvULxBH CBGaPmh123iY61EpFeEEFpQdvCZ8SFP21vgJ4J+FBH0jvdD24b5yIWOoDvh4Si3RJL4e th/Tj7qesuFtbwF3mbCicY0K1mci7rysDD7E60f5MjUhZn5+uwYfn66U3nLh6NSnhxYn HYQpX+L7TZyAMsiwZuIDJavNNKVbTH9af7gO3/0bjY9eqfch0ueC5wLwRVMPwyp36IoN nMmA== ARC-Authentication-Results: i=1; mx.google.com; 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 x74si901809oif.119.2020.04.07.10.22.31; Tue, 07 Apr 2020 10:22:47 -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; 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 S1726598AbgDGRVq (ORCPT + 99 others); Tue, 7 Apr 2020 13:21:46 -0400 Received: from retiisi.org.uk ([95.216.213.190]:52464 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726277AbgDGRVq (ORCPT ); Tue, 7 Apr 2020 13:21:46 -0400 Received: from valkosipuli.localdomain (valkosipuli.retiisi.org.uk [IPv6:2a01:4f9:c010:4572::80:2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by hillosipuli.retiisi.org.uk (Postfix) with ESMTPS id 35970634C89; Tue, 7 Apr 2020 20:20:36 +0300 (EEST) Received: from sailus by valkosipuli.localdomain with local (Exim 4.92) (envelope-from ) id 1jLrtr-0002Ma-BQ; Tue, 07 Apr 2020 20:20:35 +0300 Date: Tue, 7 Apr 2020 20:20:35 +0300 From: Sakari Ailus To: Tomasz Figa Cc: Robert Foss , Maxime Ripard , Dongchun Zhu , Fabio Estevam , Andy Shevchenko , linux-media , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , linux-kernel , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" Subject: Re: [PATCH v6 1/3] media: dt-bindings: ov8856: Document YAML bindings Message-ID: <20200407172035.GM6127@valkosipuli.retiisi.org.uk> References: <20200403232736.GA6127@valkosipuli.retiisi.org.uk> <20200404093446.vuvwrhn5436h4d3s@gilmour.lan> <20200406083506.GE6127@valkosipuli.retiisi.org.uk> <20200407083647.4mocdl7aqa3x737q@gilmour.lan> <20200407123232.ktvaifhqntgzvkap@gilmour.lan> <20200407163916.GL6127@valkosipuli.retiisi.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Tomasz, On Tue, Apr 07, 2020 at 06:46:06PM +0200, Tomasz Figa wrote: > On Tue, Apr 7, 2020 at 6:40 PM Sakari Ailus wrote: > > > > On Tue, Apr 07, 2020 at 05:47:41PM +0200, Robert Foss wrote: > > > On Tue, 7 Apr 2020 at 14:32, Maxime Ripard wrote: > > > > > > > > Hi Robert, > > > > > > > > On Tue, Apr 07, 2020 at 01:29:05PM +0200, Robert Foss wrote: > > > > > On Tue, 7 Apr 2020 at 10:36, Maxime Ripard wrote: > > > > > > On Mon, Apr 06, 2020 at 11:35:07AM +0300, Sakari Ailus wrote: > > > > > > > > But that 19.2MHz is not a limitation of the device itself, it's a > > > > > > > > limitation of our implementation, so we can instead implement > > > > > > > > something equivalent in Linux using a clk_set_rate to 19.2MHz (to make > > > > > > > > sure that our parent clock is configured at the right rate) and the > > > > > > > > clk_get_rate and compare that to 19.2MHz (to make sure that it's not > > > > > > > > been rounded too far apart from the frequency we expect). > > > > > > > > > > > > > > > > This is doing exactly the same thing, except that we don't encode our > > > > > > > > implementation limitations in the DT, but in the driver instead. > > > > > > > > > > > > > > What I really wanted to say that a driver that doesn't get the clock > > > > > > > frequency from DT but still sets that frequency is broken. > > > > > > > > > > > > > > This frequency is highly system specific, and in many cases only a certain > > > > > > > frequency is usable, for a few reasons: On many SoCs, not all common > > > > > > > frequencies can be used (e.g. 9,6 MHz, 19,2 MHz and 24 MHz; while others > > > > > > > are being used as well), and then that frequency affects the usable CSI-2 > > > > > > > bus frequencies directly --- and of those, only safe, known-good ones > > > > > > > should be used. IOW, getting the external clock frequency wrong typically > > > > > > > has an effect that that none of the known-good CSI-2 bus clock frequencies > > > > > > > are available. > > > > > > > > > > > > So clock-frequency is not about the "Frequency of the xvclk clock in > > > > > > Hertz", but the frequency at which that clock must run on this > > > > > > particular SoC / board to be functional? > > > > > > > > > > > > If so, then yeah, we should definitely keep it, but the documentation > > > > > > of the binding should be made clearer as well. > > > > > > > > > > Alright so, let me summarise the desired approach then. > > > > > > > > There's a separate discussion on the same topic here: > > > > https://lore.kernel.org/linux-media/20200407122106.GD4751@pendragon.ideasonboard.com/ > > > > > > Thanks for the link. > > > > > > > > > > > > ACPI: > > > > > - Fetch the "clock-frequency" property > > > > > - Verify it to be 19.2Mhz > > > > > > > > > > DT: > > > > > - Fetch the "clock-frequency" property > > > > > - Verify it to be 19.2Mhz > > > > > - Get xvclk clock > > > > > - Get xvclk clock rate > > > > > - Verify xvclk clock rate to be 19.2Mhz > > > > > > > > The current status is that you should > > > > 's/clock-frequency/link-frequencies/', and in order to replace > > > > assigned-clock-rates, you'll want to have a clk_set_rate to 19.2MHz > > > > between steps 3 and 4 > > > > > > Would we want to 's/clock-frequency/link-frequencies/' for ACPI too? > > > I imagine that would cause some breakage. > > > > It would, yes, and it would be no more correct on DT either. > > > > There are basically two possibilities here; either use the clock-frequency > > property and set the frequency, or rely on assigned-clock-rates, and get > > the frequency instead. > > > > The latter, while I understand it is generally preferred, comes with having > > to figure out the register list set that closest matches the frequency > > obtained. The former generally gets around this silently by the clock > > driver setting the closest frequency it can support. > > Wouldn't the former actually cause problems, because the closest > frequency the clock driver can support could be pretty far from the > one requested? (E.g. 19.2 MHz vs 24 MHz) The driver needs to check the > resulting frequency anyway. That's possible, yes; in this case there wouldn't be a guarantee the frequency wouldn't be far off. > > Perhaps a simplified approach of rounding the result of clk_get_rate() > to a multiple of 100 KHz and comparing it to the hardcoded value would > be enough in practice? Then the question is: how much deviation from the expected value is allowed? I think there was another case where such range was checked and because the clock was just slightly more off, the probe failed because of that. I'd in that case check some fairly wide range, and print a warning if the frequency isn't in that range, but still proceed. It's generally impossible to set a precise limit on the tolerance. -- Sakari Ailus