Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1015561ybz; Fri, 17 Apr 2020 14:14:29 -0700 (PDT) X-Google-Smtp-Source: APiQypJzCBePJLuq5ZJtfmm0lJ8DNzVmaApH7aXlDHylmA4ktZePPYrNPJx/6MsLTSxLl1CvOcO4 X-Received: by 2002:a17:906:b7da:: with SMTP id fy26mr5125185ejb.327.1587158069071; Fri, 17 Apr 2020 14:14:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587158069; cv=none; d=google.com; s=arc-20160816; b=qyXayzgYAWL+FbXrIDGFQhnQ+VQiQNldMq8kAsLisM6XIPVc4Yv4duHcxBXdyHMUfj ZxbcYOQkERNVm4bEA1u/qOwmlbBKyEy9+bk3ERykthFX61wf9k57MlBmqzIOIltGMQC+ MzYUHExmbWBEXoRsKCdIC0QHk5gSQRA1UKffUDAWUYKhe4uRFEUIge6XUi+pV6qaYxRZ zbI2vGXgp2cqgTsQcaLe1mNv2t3qq+tf2KmREJsZ95oxJU4P0EHLFZIC2ylCs7nEdV78 QKK6TIrhXPHND8Euq4GAFLM+J7siyoC0xHEHOq4B41oeYXOKJxv38p+cGovNrHa0zyzZ Ubdw== 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=OlJHu2tNIRXilHBPRkOqOH56O/SKw0eGa9SbGUKri/I=; b=aRsFELiayvu9TqTPFStY3GNwK2qELp9RWNoLcKHdcwUiCkvTmNXu56gd0yOxvfrZwU Eo3UE8PCTF11xjl4v4U0+j+ptmCfwfa1Wh+rj6+YwBmuar2GME30/bzCSA8Z1MVIEa4Z sLG1BnRdBPgQiye+vk96FdRonknLVCW/vZYvhRh1s9udI6eUlAh62LNwd+yanuAUxIZv 0zhjSVWSQkpRny3Do2yMSZGDq0+PYupIrFuvYqs0cruQYAUbDImYtYrjAHzz1ot40wOP vqHZhH79Y+zmntcLWSwX6K0UQWtgPnFd7P3u6n6LYhDnq1dY+x6EWoREDGby6lmBaf+1 TfKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=IPvvVVaT; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a8si3066508edr.518.2020.04.17.14.14.06; Fri, 17 Apr 2020 14:14:29 -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=@gmail.com header.s=20161025 header.b=IPvvVVaT; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727780AbgDQVLC (ORCPT + 99 others); Fri, 17 Apr 2020 17:11:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726129AbgDQVLB (ORCPT ); Fri, 17 Apr 2020 17:11:01 -0400 Received: from mail-io1-xd44.google.com (mail-io1-xd44.google.com [IPv6:2607:f8b0:4864:20::d44]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C3E70C061A0C; Fri, 17 Apr 2020 14:11:01 -0700 (PDT) Received: by mail-io1-xd44.google.com with SMTP id w20so3925542iob.2; Fri, 17 Apr 2020 14:11:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OlJHu2tNIRXilHBPRkOqOH56O/SKw0eGa9SbGUKri/I=; b=IPvvVVaTbCBrVHxOQannxvijirEKYdyuFI3EY6lupoF4gZjUlVvngD0Bpe/lyCT9Uc jyVK/ASI1lavaq/GtpOeuDiVtlQARpmrpIJpF2uMVHQJgfe6+meMZ2+ToRSXf0BxSjzx I1GnhxOyCSZA1OcGlAU3LnRdsrnhcHjHhKoOH/Qyvx00+48r55qku3V7iR4R7p92foCS 8IAPXE+fN7NUFhskpXc0lEbgXgfyG/HBkbG+I+Kz2PE6dHvP3gVKqcdOHQ5FZS5WEGXf zcjNe/ZU/mZyPfNizmlzBMnEkDdgZ3xk6vrtZq30n/ZCCOSYftArEWIEtD7qL6whdRjB nLBA== 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=OlJHu2tNIRXilHBPRkOqOH56O/SKw0eGa9SbGUKri/I=; b=fum/YS7qLUhwPyC5Gye7JksuDZM4BAtY8jEb1XH5dNPd7EeuVB3AARuNjALLzI0Zh8 BGIVJ+8b5F7v5fmpoN2cSo/CnAeM+la9a2xc4fNzRoiD9k/5OKTscnthmmFotjm6O57u dStde9sLHrGC7krQ53fyxYKJEZ1Rgv9YKZeahhepEOQTWzdxFSABJVYCh1c+eRNR1wBD eNawgNl7FYDO8o5I4ES1nL+CQVU1yKzndHRpZFzpY5rVRFcs90dU/SCbl9L7uD5RFaUw Fq+LflUFFSteaILJXc3Lrwu4+TRkjUQ+eo3syFE2MClzpzUyPVF1MCpPu7Ym+BR/YXYv SPFg== X-Gm-Message-State: AGi0PuZYFasaT9c49Vt3uF1yRkGWqmMrmPvA+05mPU/8uJT1+EAyT8oQ Bh1k1HwVXNYZTVCdaltM7tWl2jU695+JaqM0Egg= X-Received: by 2002:a6b:f60f:: with SMTP id n15mr5150493ioh.22.1587157861052; Fri, 17 Apr 2020 14:11:01 -0700 (PDT) MIME-Version: 1.0 References: <20200417202859.35427-1-contact@artur-rojek.eu> <20200417202859.35427-5-contact@artur-rojek.eu> In-Reply-To: <20200417202859.35427-5-contact@artur-rojek.eu> From: Andy Shevchenko Date: Sat, 18 Apr 2020 00:10:49 +0300 Message-ID: Subject: Re: [RESEND PATCH v5 5/5] input: joystick: Add ADC attached joystick driver. To: Artur Rojek Cc: Dmitry Torokhov , Rob Herring , Mark Rutland , Jonathan Cameron , Paul Cercueil , Heiko Stuebner , linux-input , devicetree , linux-iio , Linux Kernel Mailing List 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 Fri, Apr 17, 2020 at 11:21 PM Artur Rojek wrote: > > Add a driver for joystick devices connected to ADC controllers > supporting the Industrial I/O subsystem. ... > +#include Do you really need this? (See below as well) ... > + sign = (tolower(joy->chans[i].channel->scan_type.sign) == 's'); Too many parentheses. But here it's up to you, ... > + case 2: > + val = ((const u16 *)data)[i]; Can't you do this in each branch below? > + if (endianness == IIO_BE) > + val = be16_to_cpu(val); > + else if (endianness == IIO_LE) > + val = le16_to_cpu(val); > + break; ... > + device_for_each_child_node(dev, child) { > + ret = fwnode_property_read_u32(child, "reg", &i); > + if (ret || i >= num_axes) { > + dev_err(dev, "reg invalid or missing"); > + goto err; > + } > + > + if (fwnode_property_read_u32(child, "linux,code", > + &axes[i].code)) { > + dev_err(dev, "linux,code invalid or missing"); > + goto err; > + } > + > + if (fwnode_property_read_u32_array(child, "abs-range", > + axes[i].range, 2)) { > + dev_err(dev, "abs-range invalid or missing"); > + goto err; > + } > + } > + > + joy->axes = axes; > + > + return 0; > + > +err: > + fwnode_handle_put(child); > + return -EINVAL; Can we avoid shadowing the actual error code? ... > + bits = joy->chans[0].channel->scan_type.storagebits; > + if (!bits || (bits >> 3) > 2) { Wouldn't be clear to use simple 'bits > 16'? > + dev_err(dev, "Unsupported channel storage size"); > + return -EINVAL; > + } ... > +static const struct of_device_id adc_joystick_of_match[] = { > + { .compatible = "adc-joystick", }, > + { }, > +}; > +MODULE_DEVICE_TABLE(of, adc_joystick_of_match); > + > +static struct platform_driver adc_joystick_driver = { > + .driver = { > + .name = "adc-joystick", > + .of_match_table = of_match_ptr(adc_joystick_of_match), Drop this a bit harmful of_match_ptr() macro. It should go with ugly #ifdeffery. Here you simple introduced a compiler warning. On top of that, you are using device property API, OF use in this case is contradictory (at lest to some extend). > + }, > + .probe = adc_joystick_probe, > +}; -- With Best Regards, Andy Shevchenko