Received: by 10.223.185.116 with SMTP id b49csp4446435wrg; Mon, 26 Feb 2018 18:36:14 -0800 (PST) X-Google-Smtp-Source: AH8x224GsoHTi8rC2JW37mBBXSBqjaPxGcl7oBr5vfE7TWkq93WPo6Zb+QLfwpLM1/ZiMNmSPreU X-Received: by 10.99.120.199 with SMTP id t190mr9887608pgc.72.1519698974558; Mon, 26 Feb 2018 18:36:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519698974; cv=none; d=google.com; s=arc-20160816; b=b3WzB0GNEEVBwyWkBrgFpBbGkNMz/Y6Xfgm03tIlrDtJny5SAycdtNAdU6Ug6zjdj7 ehGKkQkMWsf9tWL7UU+LAJMSmwZQqQekQhH/9SuHfc0qMC7BtezdihuYXhadygByU4Pb c92kJo1atC5p7ABXNmpUw27RMOvsI/f+bDuHeDdyqrwk2c4pksBtkKtRRb4z63yv6w6J QJeRLaOYSR0hWW9LITzkyoAXLt4foP9FTPREXlAXtH/SDcnn9CvQjDLmEMbHxUnAri1Q DggwPzmTklaYp8QIL0lbXFytBD2HQBtI24ANyFAJQGWQJZaG0VUQV5cbHBITU2QzdQF5 Snkw== 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 :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=+F7urnJ2itgoa894dFTDagDv1fe7sEFzLWKUaETNnxY=; b=hoe27twQZEAHzASmQbbnYSiVoiZ+L+PBSxHa77lCyVKXmRP0oqxdDiOe3hWaBd8mg3 srIFE5fF0MlJAWC6XA9EGzL7QR65H3vGIlJAENMoTYe6QeYWUNtPYeuHs+76k6ZeMPEG ESAjcQtH02/aOESHskoHtfSFxiFUJpdLv15rqg26ZoKuwEmLAXo+u1M2kVnKZMPtNU5y RGT1mle8KnwdCcHrklbKEX3/4Hz2KngLRL1ew+tjiR8ygXk4guvh2j78e07nW/qGsG4t vbAPLDUZnBdL3dhzkCKSTlqii5G0Ja6+Ufm1wYlXfGBfkC1mxNrf5F8NIA/ya2MtWybx wBAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=NPBfqC+h; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h34-v6si7754130pld.26.2018.02.26.18.35.59; Mon, 26 Feb 2018 18:36:14 -0800 (PST) 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=@linaro.org header.s=google header.b=NPBfqC+h; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752067AbeB0CfD (ORCPT + 99 others); Mon, 26 Feb 2018 21:35:03 -0500 Received: from mail-ot0-f193.google.com ([74.125.82.193]:44120 "EHLO mail-ot0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751831AbeB0CfB (ORCPT ); Mon, 26 Feb 2018 21:35:01 -0500 Received: by mail-ot0-f193.google.com with SMTP id 79so2430240oth.11 for ; Mon, 26 Feb 2018 18:35:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+F7urnJ2itgoa894dFTDagDv1fe7sEFzLWKUaETNnxY=; b=NPBfqC+hXxnCPFeKiSDBqsfOQst3FkxqLpq/RPMOzoFr9T7RqmpuG7ejn7NqFvJa+G 2KLxP6ZLFkCbDGFCrk7gGvW69q6yKU91sm19Fh+GFmC/Lwm2aT1F0phZIsLJ+5WPnnX3 4BrHfyrWEUEe18HGipsQZaN+5Rl3mEJrFFiZs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+F7urnJ2itgoa894dFTDagDv1fe7sEFzLWKUaETNnxY=; b=SOXjaoOTYXGf/gGPh+pC0ELRjiBm4HquMSB+PkAFCB+BOfpjo2E1pm3Cr0OkeCwm0B p1YjqZf16LzD6LP40VfPGofotujdWMKG5RJX5Wa/xvjXh3aWsd6Cq74ezNeUxVDIZROz 2kT6PIC9SnMXcQJ7dHGnSJrxQHbx4HZDhJqIgHfWpaYDDN3z4a3zm4uf03ojjdKjK6BD rAPEDk6xawWxE1d5FpNVlve+BJ5GqTSgp2Q854ElgHEbDQcd7B7TVsDMS5ykx0LrEM5X SsjlIfDuMYfXtF/4qY82uq4c/gFvPhvUOAw40uuKoLkG0wqJmmDV/iuh6NxLhZYXEQuf BAew== X-Gm-Message-State: APf1xPDxUMT2cB6cO9PUYYwRKZrNcpTaJvVLncgdKXVg8a3/M4ZoJKTn WwU9YN1U37xBiS/boLpF+7ocjATgZ6KUcmJxQGbvtQ== X-Received: by 10.157.39.36 with SMTP id r33mr8771620ota.321.1519698900713; Mon, 26 Feb 2018 18:35:00 -0800 (PST) MIME-Version: 1.0 Received: by 10.157.96.5 with HTTP; Mon, 26 Feb 2018 18:35:00 -0800 (PST) In-Reply-To: References: <334505d3a13a73ad347427b408ed581832434289.1519468782.git.baolin.wang@linaro.org> From: Baolin Wang Date: Tue, 27 Feb 2018 10:35:00 +0800 Message-ID: Subject: Re: [PATCH v2 3/3] gpio: Add Spreadtrum PMIC EIC driver support To: Andy Shevchenko Cc: Linus Walleij , Rob Herring , Mark Rutland , devicetree , Linux Kernel Mailing List , "open list:GPIO SUBSYSTEM" , Mark Brown 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 On 26 February 2018 at 20:02, Andy Shevchenko wrote: > On Mon, Feb 26, 2018 at 5:01 AM, Baolin Wang wrote: >> On 25 February 2018 at 20:19, Andy Shevchenko wrote: >>> On Sat, Feb 24, 2018 at 12:44 PM, Baolin Wang wrote: > >>>> +static int sprd_pmic_eic_direction_input(struct gpio_chip *chip, >>>> + unsigned int offset) >>>> +{ >>>> + /* EICs are always input, nothing need to do here. */ >>>> + return 0; >>>> +} >>>> + >>>> +static void sprd_pmic_eic_set(struct gpio_chip *chip, unsigned int offset, >>>> + int value) >>>> +{ >>>> + /* EICs are always input, nothing need to do here. */ >>>> +} >>> >>> Remove both. >>> >>> Look at what GPIO core does. >> >> I've checked the GPIO core, we need the >> sprd_pmic_eic_direction_input() returns 0, since user can set GPIOD_IN >> flag when requesting one GPIO, otherwise it will return errors. > > Right. I thought it depends on presence of direction_output(). > >> We also need one dummy sprd_pmic_eic_set() when setting debounce for >> one GPIO, otherwise it will return errors. > > This is pretty much a "feature" of GPIO framework. It shouldn't > require ->set() by logic if there is no output facility. > OK. > >>>> + for (n = 0; n < chip->ngpio; n++) { >>>> + if (!(BIT(n) & val)) >>> >>> for_each_set_bit(). >>> >>> At some point you may need just to go across lib/ in the kernel and >>> see what we have there. >> >> I've considered the for_each_set_bit(), it need one 'unsigned long' >> type parameter, but we get the value from regmap is 'u32' type. So we >> need one extra conversion from 'u32' to 'unsigned long' like: >> >> unsigned long reg = val; >> >> for_each_set_bit(n, ®, chip->ngpio) { >> ....... >> } >> >> If you like this conversion, then I can change to use >> for_each_set_bit(). Thanks. > > Wouldn't it work like > > unsigned long val; > > ...regmap_read(..., &val); > > ? It can not work, regmap_read() expects 'unsigned int *'. But I can convert it like this: for_each_set_bit(n, (unsigned long *)&val, chip->ngpio) { ....... } -- Baolin.wang Best Regards