From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yw1-f225.google.com (mail-yw1-f225.google.com [209.85.128.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 96A3433E7 for ; Fri, 23 Jan 2026 19:01:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.225 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769194906; cv=none; b=pTR8BX0pb7Ifc03iuqfspTC25Ys1rg0hE+epXDYW2wE6fvCPBPahN0I9w5PRMEkIO6BUorT/NWEo2uJ4MMjfAFRCz4FlvHZvEITVYFSLI6/MOugYmBXR/wJNB8hX3WHpP63DUqoUA3jngJNrWLAUvrtj934aozX9lgQ63Ry/e+E= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769194906; c=relaxed/simple; bh=5ehmAwSnBuoLdoJk3P5h3xy0mm9XgalyzfCH5yFeZtY=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=IlzhUU1DKAQhPxVJfNjZ88MRkaLMfzy1i+z1mauCh/ItOSk8s/NmMXp4z+Ua31RGsTBoZWvM/U71zHNP6QoiZ6qcelz8wXyC7oN3WZMGWZRspxG+KW92J77oGjK76bLUSQ8z5OQYRQCFr8cPAR4Bbgo/i+G76tHOzzQTcitPoK8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=c3quSrMp; arc=none smtp.client-ip=209.85.128.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="c3quSrMp" Received: by mail-yw1-f225.google.com with SMTP id 00721157ae682-78fdb90b670so24356477b3.2 for ; Fri, 23 Jan 2026 11:01:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769194903; x=1769799703; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:dkim-signature:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cT5TBo/dI90+wcDSKNtZ1iy//ljekx3o3pFpFS1CjKM=; b=gcUd1dcrP3TZFa3ykKUHlRgEN2FQU8bFkdjmiw6AdjeMxHbMeSWNG499sm/6Jk23Cr MtjG8ZMAVKx+tvpl0R69aiKVRQgLW/Xx2zfLi4jO+VyRLygXMeMwGaaOBJyEpQi2sOJj 69+dqm44rBvQMk9n0rQSpS5FklZafRJoTw8FEHMUahVDu+DPHfky+6zDcF2GOEAmLPj9 gjSSFkZBCBWMHMRYU5J9Cnu9+naFXsyyrG0MoUc66s1xvW5t3kQHUQAR65rI9t635JDw Wr83UNJgQtWasxtILx/EFdESEHXoaXjbhoDEH5DIXDoNyNc1EPx/bqBpc5pSMfzk/B41 t30w== X-Gm-Message-State: AOJu0Yw8IROF8ZaNpuvrBXor+j52QnPCtv2zUJGlEihIeQILTxeBGv5v P6u7Rpp91A2YL6S6Ey9eKp2eByr2vvRI1L83utixSh4yfviS2QhbBX90E1t+Qb1kpdStpOMFd3T RLJe3YRfzH5mhz/rAJzbxG1t8C4cCQ5HtR5/zf8roYTTBN1pRzNVRfK2/dwT1dzhzx4EFoNup6f FDx4trv8zWOCmSiQ0qPP81J1DXi3aPlG6r9oP/ysTKUj9Bh+IIEmn7SHM6qyBFCtGwwAeO9OBf0 6Tf5amVyONwCgY3MhCE8Rps X-Gm-Gg: AZuq6aKzrPEcyWEU96Dlv+56PEs59LZ+Zp+LXjYuDIfQvSY9+qd7jKA/AN1tZgpxLm6 LsJb99d+TZ4yA4WtA2wEO61OKlCmrpQQYH5lOBpDRKSWGeDpaVw2E/ssnh/0dNxkbhziNuGfCWg s4DvWjy+c4G8einM0kQL7aHDUgey2nX3cmWD1bn4b9bGJNupovcNYyLKlBKnZJ/x9qaDJ5w4Ukv TF/QIlRnY6CatVIQ3qCKrkS7JeFXHtRJYv2nHLabVXwTfN7KSbPBjOcjr3MxHd4WX5wISzS3rNn 747cr9nfNDl8rlg8K6FOsawa8kfCWzstyxHcMVCWj2clnUDz0Awh3cr5GY9nzT4Wc6GWBJ0OK7g IL6OF4rCLmvmA8VZ7gBXeyj4bKhKFYGaDYPdAW9iI3vz4aF4vo4mS9bp6dcM5VRffpwDDbZ/fkT b8Fs1lzbF9OqoPwkNFZGF/VkWsImsjUiEwnGU5E1X54iq3cNGblQ== X-Received: by 2002:a05:690c:c529:b0:788:c22:1f0 with SMTP id 00721157ae682-79439a30b4fmr34491277b3.54.1769194903245; Fri, 23 Jan 2026 11:01:43 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-77.dlp.protect.broadcom.com. [144.49.247.77]) by smtp-relay.gmail.com with ESMTPS id 00721157ae682-7943b2d9f73sm1675707b3.31.2026.01.23.11.01.42 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 23 Jan 2026 11:01:43 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-dl1-f69.google.com with SMTP id a92af1059eb24-11b9786fb51so2750719c88.1 for ; Fri, 23 Jan 2026 11:01:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1769194902; x=1769799702; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :references:cc:to:from:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=cT5TBo/dI90+wcDSKNtZ1iy//ljekx3o3pFpFS1CjKM=; b=c3quSrMpTEoEEfNzmkG3iTxzlV+JoxO7swW+QeMztEMjpN1KSyNtTdqZIHxs17gHGH 5M9nEQ5sdofTHUPBaYBm9zs6nK311GYRUQwKUZjyGDURVuFiB8Bqqv28vtglNl7pM1jq PrRB8ZAcClVb4mFy62DAPT2AXPbO/x0ZnuSfs= X-Received: by 2002:a05:7022:248c:b0:11b:2de8:6271 with SMTP id a92af1059eb24-1247dc0b07emr1814344c88.39.1769194901685; Fri, 23 Jan 2026 11:01:41 -0800 (PST) X-Received: by 2002:a05:7022:248c:b0:11b:2de8:6271 with SMTP id a92af1059eb24-1247dc0b07emr1814325c88.39.1769194900947; Fri, 23 Jan 2026 11:01:40 -0800 (PST) Received: from [10.67.48.245] ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1247d91ca0fsm5379709c88.8.2026.01.23.11.01.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 23 Jan 2026 11:01:39 -0800 (PST) Message-ID: Date: Fri, 23 Jan 2026 11:01:37 -0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] gpio: brcmstb: implement irq_mask_ack From: Florian Fainelli To: Andy Shevchenko Cc: linux-kernel@vger.kernel.org, Doug Berger , Broadcom internal kernel review list , Linus Walleij , Bartosz Golaszewski , Christophe Leroy , "open list:GPIO SUBSYSTEM" , "moderated list:BROADCOM BCM7XXX ARM ARCHITECTURE" References: <20260122010516.1200630-1-florian.fainelli@broadcom.com> <20260122010516.1200630-3-florian.fainelli@broadcom.com> Content-Language: en-US, fr-FR Autocrypt: addr=florian.fainelli@broadcom.com; keydata= xsBNBFPAG8ABCAC3EO02urEwipgbUNJ1r6oI2Vr/+uE389lSEShN2PmL3MVnzhViSAtrYxeT M0Txqn1tOWoIc4QUl6Ggqf5KP6FoRkCrgMMTnUAINsINYXK+3OLe7HjP10h2jDRX4Ajs4Ghs JrZOBru6rH0YrgAhr6O5gG7NE1jhly+EsOa2MpwOiXO4DE/YKZGuVe6Bh87WqmILs9KvnNrQ PcycQnYKTVpqE95d4M824M5cuRB6D1GrYovCsjA9uxo22kPdOoQRAu5gBBn3AdtALFyQj9DQ KQuc39/i/Kt6XLZ/RsBc6qLs+p+JnEuPJngTSfWvzGjpx0nkwCMi4yBb+xk7Hki4kEslABEB AAHNMEZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29tPsLB IQQQAQgAywUCZWl41AUJI+Jo+hcKAAG/SMv+fS3xUQWa0NryPuoRGjsA3SAUAAAAAAAWAAFr ZXktdXNhZ2UtbWFza0BwZ3AuY29tjDAUgAAAAAAgAAdwcmVmZXJyZWQtZW1haWwtZW5jb2Rp bmdAcGdwLmNvbXBncG1pbWUICwkIBwMCAQoFF4AAAAAZGGxkYXA6Ly9rZXlzLmJyb2FkY29t Lm5ldAUbAwAAAAMWAgEFHgEAAAAEFQgJChYhBNXZKpfnkVze1+R8aIExtcQpvGagAAoJEIEx tcQpvGagWPEH/2l0DNr9QkTwJUxOoP9wgHfmVhqc0ZlDsBFv91I3BbhGKI5UATbipKNqG13Z TsBrJHcrnCqnTRS+8n9/myOF0ng2A4YT0EJnayzHugXm+hrkO5O9UEPJ8a+0553VqyoFhHqA zjxj8fUu1px5cbb4R9G4UAySqyeLLeqnYLCKb4+GklGSBGsLMYvLmIDNYlkhMdnnzsSUAS61 WJYW6jjnzMwuKJ0ZHv7xZvSHyhIsFRiYiEs44kiYjbUUMcXor/uLEuTIazGrE3MahuGdjpT2 IOjoMiTsbMc0yfhHp6G/2E769oDXMVxCCbMVpA+LUtVIQEA+8Zr6mX0Yk4nDS7OiBlvOwE0E U8AbwQEIAKxr71oqe+0+MYCc7WafWEcpQHFUwvYLcdBoOnmJPxDwDRpvU5LhqSPvk/yJdh9k 4xUDQu3rm1qIW2I9Puk5n/Jz/lZsqGw8T13DKyu8eMcvaA/irm9lX9El27DPHy/0qsxmxVmU pu9y9S+BmaMb2CM9IuyxMWEl9ruWFS2jAWh/R8CrdnL6+zLk60R7XGzmSJqF09vYNlJ6Bdbs MWDXkYWWP5Ub1ZJGNJQ4qT7g8IN0qXxzLQsmz6tbgLMEHYBGx80bBF8AkdThd6SLhreCN7Uh IR/5NXGqotAZao2xlDpJLuOMQtoH9WVNuuxQQZHVd8if+yp6yRJ5DAmIUt5CCPcAEQEAAcLB gQQYAQIBKwUCU8AbwgUbDAAAAMBdIAQZAQgABgUCU8AbwQAKCRCTYAaomC8PVQ0VCACWk3n+ obFABEp5Rg6Qvspi9kWXcwCcfZV41OIYWhXMoc57ssjCand5noZi8bKg0bxw4qsg+9cNgZ3P N/DFWcNKcAT3Z2/4fTnJqdJS//YcEhlr8uGs+ZWFcqAPbteFCM4dGDRruo69IrHfyyQGx16s CcFlrN8vD066RKevFepb/ml7eYEdN5SRALyEdQMKeCSf3mectdoECEqdF/MWpfWIYQ1hEfdm C2Kztm+h3Nkt9ZQLqc3wsPJZmbD9T0c9Rphfypgw/SfTf2/CHoYVkKqwUIzI59itl5Lze+R5 wDByhWHx2Ud2R7SudmT9XK1e0x7W7a5z11Q6vrzuED5nQvkhAAoJEIExtcQpvGagugcIAJd5 EYe6KM6Y6RvI6TvHp+QgbU5dxvjqSiSvam0Ms3QrLidCtantcGT2Wz/2PlbZqkoJxMQc40rb fXa4xQSvJYj0GWpadrDJUvUu3LEsunDCxdWrmbmwGRKqZraV2oG7YEddmDqOe0Xm/NxeSobc MIlnaE6V0U8f5zNHB7Y46yJjjYT/Ds1TJo3pvwevDWPvv6rdBeV07D9s43frUS6xYd1uFxHC 7dZYWJjZmyUf5evr1W1gCgwLXG0PEi9n3qmz1lelQ8lSocmvxBKtMbX/OKhAfuP/iIwnTsww 95A2SaPiQZA51NywV8OFgsN0ITl2PlZ4Tp9hHERDe6nQCsNI/Us= In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e On 1/22/26 11:26, Florian Fainelli wrote: > > > On 1/22/2026 11:17 AM, Florian Fainelli wrote: >> >> >> On 1/21/2026 11:36 PM, Andy Shevchenko wrote: >>> On Thu, Jan 22, 2026 at 3:06 AM Florian Fainelli >>> wrote: >>>> >>>> From: Doug Berger >>>> >>>> The irq_mask_ack operation is slightly more efficient than doing >>>> irq_mask and irq_ack separately. >>> >>> I would refer to the callbacks as >>> >>> .irq_mask() >>> .irq_ack() >>> >>> et cetera. >> >> Ack. >> >>> >>>> More importantly for this driver it bypasses the check of >>>> irqd_irq_masked ensuring a previously masked but still active >>>> interrupt gets remasked if unmasked at the hardware level. This >>>> allows the driver to more efficiently unmask the wake capable >>>> interrupts when quiescing without needing to enable the irqs >>>> individually to clear the irqd_irq_masked state. >>> >>> ... >>> >>>> -// Copyright (C) 2015-2017 Broadcom >>>> +// Copyright (C) 2015-2026 Broadcom >>> >>> Shouldn't it be rather 2015-2017,2026 ? (In one case when I updated a >>> driver for Intel, I went via Git history to gather the info.) >> >> Ack. >> >>> >>> ... >>> >>>>   static void brcmstb_gpio_set_imask(struct brcmstb_gpio_bank *bank, >>>> -               unsigned int hwirq, bool enable) >>>> +               unsigned int hwirq, bool enable, bool ack) >>> >>> This type of interface is usually discouraged as it makes code harder >>> to read and follow. Since there are a lot of duplication, I recommend >>> to move the ack op to a separate helper. >> >> Good point, knowing the order and what set in those parameters can be >> confusing. >> >>> >>> ... >>> >>>> -       gpio_generic_write_reg(&bank->chip, >>>> -                              priv->reg_base + GIO_MASK(bank->id), >>>> imask); >>>> +       if (ack) >>>> +               gpio_generic_write_reg(&bank->chip, >>>> +                                      priv->reg_base + >>>> GIO_MASK(bank->id), >>>> +                                      imask); >>> >>> Id est this piece... >>> >>> >>> >>>> +static void brcmstb_gpio_irq_mask_ack(struct irq_data *d) >>>> +{ >>>> +       struct gpio_chip *gc = irq_data_get_irq_chip_data(d); >>>> +       struct brcmstb_gpio_bank *bank = gpiochip_get_data(gc); >>>> + >>>> +       brcmstb_gpio_set_imask(bank, d->hwirq, false, true); >>> >>> ...and call it here explicitly (seems the only place for it, so it can >>> even be just moved here without an intermediate helper). > > Actually we need it to be part of brcmsftb_gpio_set_imask() because this > is where the guard(gpio_generic_lock_irqsave) resides. I can't really > see a better alternative, short of create two implementations: of > brcmstb_gpio_set_imask() and brcmstb_gpio_set_imask_ack() which does not > feel any better than the proposed patch. Or creating yet another set of intermediary helpers that are not including the locking, and then using them in places where the locking needs to be used, yes, that's probably the cleanest, let me do that. -- Florian