Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp62976ybt; Tue, 7 Jul 2020 16:08:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzZY3zglV3C50RtwuAWQnt1USkwUFc0uhSk5aR+EAmLiDCLeO5i7eCQrz00YVEJBAYMaYmn X-Received: by 2002:aa7:d78b:: with SMTP id s11mr59269086edq.319.1594163303894; Tue, 07 Jul 2020 16:08:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594163303; cv=none; d=google.com; s=arc-20160816; b=TVM1ogV8m6pqRiGUA9iYviWB+NBBm85/wjMVZUCmQfTYS1OxLZgN0bD487MGSUS6vb ZHvZXhcJyC+RHR6y450UqOcakz+LciZUspk+qQFs9x78otY9Gy6BJcXpzP5Qr32NjXEN ypTRi8SDLsqPyBghlMWi/QX6qZ0hf/soHRPq5l5UbiSKs2PfWjQF89OUu02t79xLIyN9 MSMHaHTRLIAylr0Rj/sWVoVuP0y3qIDD2c2KJMi/SrerksYCSMdwTgeGZDTqN+Wvb/dw 3fvgtRXrNF8w9nd+su9Na3Hp91VwEtYRe99bAKrn4sgpPT4feHQJiXIUziQqVPKNLrEp MGAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=0brjpEwt3LWgIWnZnDwkYUdaWWiwXptJrmC/ZFcX/HQ=; b=WHsg2X1xQLsCGvnIpQdPmUon6e12iG8oj5F/W75DITr+OEg00kuK499CgRyCCmprRx c+9LnUbzOQQLPFMtKqn+st5b+gi0lQ4fXqHJh/DGL55D+PXg4qLYWhYrAw+zQoWyGEWv 39VC05w0fVG/cJMdXL2R7qkgW+HCaThY6zF8YbbT7C+0qFqEcv5umXAjgPPu4mdKqrQt 338CIVTRalb3acfkUY7Vz+rdcDVDeiMDDJd/pIKr9zcx5CYjm05IZjmbcvAYuWBPATmK E1Pw+0nA91pXyr2QQNaWIz4aXH/0SYeFvoVD9bj6mLee8afXQwX6B3mFgxdq88dXV94U kxVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=BqgHANLQ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id lc2si9276374ejb.424.2020.07.07.16.07.58; Tue, 07 Jul 2020 16:08:23 -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=@chromium.org header.s=google header.b=BqgHANLQ; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729378AbgGGXEW (ORCPT + 99 others); Tue, 7 Jul 2020 19:04:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47830 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728742AbgGGXDm (ORCPT ); Tue, 7 Jul 2020 19:03:42 -0400 Received: from mail-vs1-xe42.google.com (mail-vs1-xe42.google.com [IPv6:2607:f8b0:4864:20::e42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A5FE3C061755 for ; Tue, 7 Jul 2020 16:03:42 -0700 (PDT) Received: by mail-vs1-xe42.google.com with SMTP id e15so23454591vsc.7 for ; Tue, 07 Jul 2020 16:03:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=0brjpEwt3LWgIWnZnDwkYUdaWWiwXptJrmC/ZFcX/HQ=; b=BqgHANLQsFif0HG55ITqpadVS6fjfIF2CV8dhok0vezrpOEEAmex2bupgTL+ftP6CW 4n+9IuBOME0XbSyOmYoUwvFRGwLkvbU9IC8rIbNlIdOoKxLek3hL61Dj7ZAot96xzdUF K9SHLz6w7+TQ9spWWnMYYb28XBBQO4yFAQwV4= 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=0brjpEwt3LWgIWnZnDwkYUdaWWiwXptJrmC/ZFcX/HQ=; b=QeoyV7L+ACMaP93b6zODbxL55kXjXWiWLH6DzyMc+DvNKEIZyjfT04T4e7Qr/WMwiy gQ2x9G4AqEb7DjcFFiH0KGQCvG7NSGLzjH6ZULx3fS6peIvYIr1c/BRDQ0S3TIeomZDw py937pg7MYO1kGMQeJyPQXPUcToHcAkpogrQwmukgKvKWokQNUvCCC1beAccxU3InUet Yw+b4WXlwhJG7ekeDQ95k4DjANhp2jQX79Or8I/z/Ca9dLzPSOrYHvH+9Yslze0Y3jvY 6E9TIJLYCjvIyKGgqbM3EoQ1OPWBz85KZvfxtaTM2vgPGlzX+eXKor427a6AzQtCdz6p Oofw== X-Gm-Message-State: AOAM53185HEGTlgfZODn1Q8nItPuxKp6HrHXldDhsV8Vhm5pfSlIB4Ka NL1dhhzbZ0i+JAuqJPU8b7AFyMUTC9o= X-Received: by 2002:a67:f504:: with SMTP id u4mr30773741vsn.91.1594163021531; Tue, 07 Jul 2020 16:03:41 -0700 (PDT) Received: from mail-vs1-f54.google.com (mail-vs1-f54.google.com. [209.85.217.54]) by smtp.gmail.com with ESMTPSA id o73sm291446vke.5.2020.07.07.16.03.40 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Jul 2020 16:03:40 -0700 (PDT) Received: by mail-vs1-f54.google.com with SMTP id q15so12697218vso.9 for ; Tue, 07 Jul 2020 16:03:40 -0700 (PDT) X-Received: by 2002:a67:6546:: with SMTP id z67mr34808529vsb.169.1594163019992; Tue, 07 Jul 2020 16:03:39 -0700 (PDT) MIME-Version: 1.0 References: <1593762506-32680-1-git-send-email-rnayak@codeaurora.org> <20200706203805.GS388985@builder.lan> In-Reply-To: From: Doug Anderson Date: Tue, 7 Jul 2020 16:03:28 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2] pinctrl: qcom: sc7180: Make gpio28 non wakeup capable for google,lazor To: Rajendra Nayak Cc: Bjorn Andersson , LinusW , Andy Gross , linux-arm-msm , "open list:GPIO SUBSYSTEM" , LKML , Maulik Shah , Lina Iyer Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Mon, Jul 6, 2020 at 9:52 PM Rajendra Nayak wrote: > > > [].. > > >>> @@ -1151,6 +1168,10 @@ static const struct msm_pinctrl_soc_data sc7180_pinctrl = { > >>> > >>> static int sc7180_pinctrl_probe(struct platform_device *pdev) > >>> { > >>> + if (of_machine_is_compatible("google,lazor")) { > >>> + sc7180_pinctrl.wakeirq_map = sc7180_lazor_pdc_map; > >>> + sc7180_pinctrl.nwakeirq_map = ARRAY_SIZE(sc7180_lazor_pdc_map); > >>> + } > >> > >> As much as I want patches landed and things working, the above just > >> doesn't feel like a viable solution. I guess it could work as a short > >> term hack but it's going to become untenable pretty quickly. > > > > I second that. > > > >> As we > >> have more variants of this we're going to have to just keep piling > >> more machines in here, right? ...this is also already broken for us > >> because not all boards will have the "google,lazor" compatible. From > >> the current Chrome OS here are the compatibles for various revs/SKUs > >> > >> compatible = "google,lazor-rev0", "qcom,sc7180"; > >> compatible = "google,lazor-rev0-sku0", "qcom,sc7180"; > >> compatible = "google,lazor", "qcom,sc7180"; > >> compatible = "google,lazor-sku0", "qcom,sc7180"; > >> compatible = "google,lazor-rev2", "qcom,sc7180"; > >> > >> ...so of the 5 boards you'll only match one of them. > >> > >> > >> Maybe I'm jumping into a situation again where I'm ignorant since I > >> haven't followed all the prior conversation, but is it really that > >> hard to just add dual edge support to the PDC irqchip driver? ...or > > FWIK, this is really a PDC hardware issue (with the specific IP rev that exists > on sc7180) so working it around in SW could get ugly. Ugh. I guess it's ugly because the workaround would need to be in the PDC driver but to properly do the workaround you need to be able to read the state of the pin from the PDC driver? ...and I guess you can't do that with the PDC register space so you'd either need to violate a layer or 3 of abstraction and snarf into the GPIO register space from the PDC driver or you'd have to provide some sort of API access from the PDC back down to the GPIO driver? -- Actually, though, I'm still not sure why this would need to be in the PDC driver. Sure, you can't just magically re-use the existing dual-edge emulation in pinctrl-msm.c, but you can add some new dual-edge emulation for when your parent handles your interrupts, can't you? As per usually, I'm talking out of my rear end, but I sorta imagine: 1. At the head of msm_gpio_irq_set_type() if you detect that "skip_wake_irqs" is set and you're on an SoC with this hardware errata then you do a loop much like the one in msm_gpio_update_dual_edge_pos() except that instead of changing the polarity with msm_writel_intr_cfg() you change the polarity with "irq_chip_set_type_parent()". 2. At the head of msm_gpio_irq_ack() you make the same function call if "skip_wake_irqs" is set and you're on an SoC with this hardware errata. It doesn't feel all that ugly to me, assuming I'm understanding it correctly. ...or maybe you can tell me why it'd be harder than that? > >> maybe it's just easier to change the pinctrl driver to emulate dual > >> edge itself and that can work around the problem in the PDC? There > >> seem to be a few samples you could copy from: > >> > >> $ git log --oneline --no-merges --grep=emulate drivers/pinctrl/ > >> 3221f40b7631 pinctrl: mediatek: emulate GPIO interrupt on both-edges > >> 5a92750133ff pinctrl: rockchip: emulate both edge triggered interrupts > >> > > > > pinctrl-msm already supports emulating dual edge, but my understanding > > was that the problem lies in that somehow this emulation would have to > > be tied to or affect the PDC driver? > > yes, thats correct, pinctrl-msm already supports it, the problem lies > in the fact that PDC does not. This patch, infact was trying to fix the > issue by removing all PDC involvement for gpio28 and making pinctrl-msm > in charge of it. If we're going to try to do this, I think we're stuck with one of these: 1. A really really long list that we keep jamming more boards into. 2. Add an entry at the top-level device tree compatible to all affected boards _just_ for this purpose. Seems ugly since we don't need it for any other reasons. 3. Add some sort of property to the pinctrl node on these boards. Seems ugly since conceivably this _could_ be worked around in software. I don't really like any of those options, so I'm really hoping we can find out how to get a workaround in... -Doug