From patchwork Mon Oct 31 13:21:33 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Wahren X-Patchwork-Id: 689299 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3t6w5Q71lTz9t35 for ; Tue, 1 Nov 2016 00:22:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942831AbcJaNWc (ORCPT ); Mon, 31 Oct 2016 09:22:32 -0400 Received: from mout.kundenserver.de ([212.227.126.134]:56904 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S942837AbcJaNWc (ORCPT ); Mon, 31 Oct 2016 09:22:32 -0400 Received: from localhost.localdomain ([95.91.4.8]) by mrelayeu.kundenserver.de (mreue005) with ESMTPSA (Nemesis) id 0MHcm8-1c2J011qcG-003NDF; Mon, 31 Oct 2016 14:21:53 +0100 From: Stefan Wahren To: Stephen Warren , Eric Anholt , Linus Walleij Cc: bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, linux-gpio@vger.kernel.org, Stefan Wahren Subject: [PATCH] pinctrl: bcm2835: reduce GPPUD set-up time Date: Mon, 31 Oct 2016 13:21:33 +0000 Message-Id: <1477920093-28180-1-git-send-email-stefan.wahren@i2se.com> X-Mailer: git-send-email 1.7.9.5 X-Provags-ID: V03:K0:0zHEP0ub6h2kw/wyk/1AkdSqfweuplxg8kkfoMqqQPnpyAaP3s7 hVl+rdlueJPwcfiwG3pfRfxNhtagpz94EoD5a3xIJxkLO8+FpMnC00gSvzF5Hv1v8l0ZIlW AfIMZZSwF4hb6zEJ/65McSNJtQZfgaBNJXfWhfQXTiQ6MBCuEK5vx4NI4BIBJcdRl4bqYGZ 6wIbPJK8cy8/3+I/VuBiQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:kjihx1vZnwI=:DgOuTtiBNiC/+ClGbvDJwl MwD4NoAAaIkthu2CPlaHecC+iSKlwgnJdGnMieX6E8OcYk4F63CEgf1F8FbEmEjUzeflko6tB MBgtorbsaqRGqlHIAaZSYzX2QMdO4hqlVfM432+bC4inZnVuGJvoBHUeczCjpLFlDdy7U85rE PpPeZHfi1b+omjhwW7VuBnN0dmVGrFxlKKPLwuegO7KmXuow8dRrefHziZNJOiBCBX2CNOB3H dx+lDDOG4Uh7dO0oXKWo1HNqplFUpk60Ut/vAdTzsqxwYHhULc8C8tkvTv9NaCXmNhv/+VAqs MCUgLMqm4h/f1+kyDCiQFDt4XfOphAUZ5fcR4Sc24+EZQftZVEyCqY+iFcCQnElDk53wOe5Lr 84QIMaD+6i/tCycY5KCWf4YNXHtQSDAv2eGkYyqsoTZtG4dmze9cYSAEH1R3s59cpPPcktnSN uiFkxr9Tz1ikAaT/bdEAUMytWokLlEqmuuWrFiu9mWYcd6MQzdlSqrHTM0OnTntEzZdnESixS GstHuexu6n/OCD2ijfWuIAqyR2JDZ8yQ+onPPYB0uxan2XPsbb93WfqLBmXbpFXLExmjbO88a QfKAVXm7cZJ9Lw+E01/GDRI3clcrUIF1+8EFWtzevpTvdzYQt+U3/iz2OI+lk6a9nQ5S4f0mn L+Eajh27B83guBIhD+qQ2bD4tLP9pbn95wbC6nTX14bSD6hw9xM9z4H933VVO7qtQ3cI= Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org Since the BCM2835 datasheet doesn't exactly specify the set-up time for the GPIO Pull-up/down Clock Registers there was an assumption of 150 cycles at a clock rate of 1 MHz. During a discussion [1] in the Raspberry Pi forum it turns out that clock rate refers to the VPU which has a rate of 250 MHz. So we can reduce the delay to a sensible value and update the comment above. I tested this optimization with a Raspberry Pi B and a multimeter. [1] - https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=163352 Signed-off-by: Stefan Wahren Reviewed-by: Eric Anholt --- drivers/pinctrl/bcm/pinctrl-bcm2835.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c index fa77165..b2dd278 100644 --- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c +++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c @@ -917,12 +917,14 @@ static int bcm2835_pinconf_set(struct pinctrl_dev *pctldev, bcm2835_gpio_wr(pc, GPPUD, arg & 3); /* - * Docs say to wait 150 cycles, but not of what. We assume a - * 1 MHz clock here, which is pretty slow... + * BCM2835 datasheet say to wait 150 cycles, but not of what. + * But the VideoCore firmware delay for this operation + * based nearly on the same amount of VPU cycles and this clock + * runs at 250 MHz. */ - udelay(150); + udelay(1); bcm2835_gpio_wr(pc, GPPUDCLK0 + (off * 4), BIT(bit)); - udelay(150); + udelay(1); bcm2835_gpio_wr(pc, GPPUDCLK0 + (off * 4), 0); } /* for each config */