Received: by 10.192.165.156 with SMTP id m28csp1530419imm; Tue, 17 Apr 2018 00:27:07 -0700 (PDT) X-Google-Smtp-Source: AIpwx4804HK/NS1Ireu9+V90Otu5T6VuUJgclfkZYKvd8h73cU7z5+uZ32ksI2QXwmTh4BOzOUzf X-Received: by 2002:a17:902:6a01:: with SMTP id m1-v6mr1010680plk.220.1523950027513; Tue, 17 Apr 2018 00:27:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523950027; cv=none; d=google.com; s=arc-20160816; b=JAzwg2nZdDPz990ixmIQQ4DWX+4zWqwAR+WKkQ29aE4uOMuc3Wq1BxBVwik4ittQze l/M9VFaNbdP5Uo7TMfl+kVkCEN35/gF11/TBipALzHBkKADDgFcAOrBQMiq0pxRApzW0 as5GlRDxNITWCZiflgjWc2Pgwn7kpIZWwMxHCfrpXsy1zVFoPx6z0ixPsFIfsVOQlXHG 81mMFaf5aHKIYT1NAGt0H82Czn49pXfCQwVrvedCMFBE1ByAPXm0+ga/LbC9xQ428rlJ dSF4m5DOn/WO8B2sP1INa5mB4+ylDuItOrYvJwrjcn1SG3OuHHwnhqVF9alc/n2Zy/WP TNbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature:arc-authentication-results; bh=Ks7SCJoAtkMIHdBxLtEzi76qjvt8wiBLp9rd2QZqPRY=; b=N8g12Sr0nnSWGmKMNBoT2Ie9HtIUXfcewiDlK+k0bcXJYFda2K8SEjpJIblQaBvMCR o/rTC2+wY2VelnFwR+nZMGfTsoQYegOTQpvjxPyZobbjEpDfZDagyjK0cJf+1a/YI9eR 5wkWpD+cWPhrSBdWjrn2qmA0GC0OTw5mO504HVLoayDdAVmyWkdfPFNoucPM1cawKI4f Hfgf1W+eiGnIwKxa3wrB1xReZEEcKrTQUJkEjfPgj1IpVCn+m8NW7q22tXgJ2dcE7Wr5 0WCBF6kBzMvlhsjrHlrauuH+3LVucWgJCcIP/qOODa2Xa1VQ+iLgCpT8XDaTqbqgqeC5 3x4g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=gNBQFrB9; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 4-v6si13808162pld.371.2018.04.17.00.26.53; Tue, 17 Apr 2018 00:27:07 -0700 (PDT) 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=@gmail.com header.s=20161025 header.b=gNBQFrB9; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752078AbeDQHZs (ORCPT + 99 others); Tue, 17 Apr 2018 03:25:48 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:35310 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751183AbeDQHZq (ORCPT ); Tue, 17 Apr 2018 03:25:46 -0400 Received: by mail-lf0-f68.google.com with SMTP id r125-v6so9066722lfe.2; Tue, 17 Apr 2018 00:25:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=Ks7SCJoAtkMIHdBxLtEzi76qjvt8wiBLp9rd2QZqPRY=; b=gNBQFrB9zW7mVBp8b82bj3PJ08B/pBGp+TRVVegpXur0bpExaBmiM4SQoXH/WF4Q98 C92znXacGTWCNb+499XcAEjlnvPzZO9NhmoAO3QNDQIFVrtsn327936KrgMvDk2j56Nc TOEuVJu41KlKbLGo9+2p/YyVzynyZVEDJcSoVoB53M5g1U0rAanNU9X3ZUBkhbUD/6Uw giAsJlt3PmH1oAFsB0raI78VE0B5u0VxIxTcOphCa8hEDA3PW2hLXE+pKy2ipdMpMWq4 q3QJVJ0g5zseyxXCk5zb+uwh9IkYsFoowKPE8v0ZAzOOqpkLktz0T82XDNj1AiD3WOlS JPwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Ks7SCJoAtkMIHdBxLtEzi76qjvt8wiBLp9rd2QZqPRY=; b=nzslMzxXEQEchUmvXERYBkeEVyh+W5jx5lnTfY9HXCVBU0ywPs3hcLaQd2yq7mYLtN rTlDr0C59uKY5f+YI8njeFqMM15oEoXtqH4iVVRRsM24u+D6jKgnK4JzThYxYhGFHu1j 3kQvL+Z6Ub96Fi7Iaw9e722EAoMqlXyubulRDuIa9GcjXfpbh7Lg0SwrsVLoD9Rw7u5v BZUdieR4fDobErM/SE7XJn1hckXjwVKuekXHthuQ/KgHMrbL5P0lqlg+TBVvW77bqZoD 9uQJW/NPDtUAE6p0dHogngwWVE3PyBbc0lqwCdG16PCM5yUF5UaX1/glK2PErETGbuvT 5mDw== X-Gm-Message-State: ALQs6tBpuQ7VVkObfIxdaGwdNS5sNMpdZdK5eDXmGslmWCVrzximO08P MuSzCUzA/3Y5TsyTDBdNFHE= X-Received: by 10.46.0.208 with SMTP id e77mr715372lji.12.1523949944941; Tue, 17 Apr 2018 00:25:44 -0700 (PDT) Received: from gmail.com (c-5eea267b-74736162.cust.telenor.se. [94.234.38.123]) by smtp.gmail.com with ESMTPSA id e8sm2432335ljj.6.2018.04.17.00.25.42 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 17 Apr 2018 00:25:43 -0700 (PDT) Date: Tue, 17 Apr 2018 09:25:30 +0200 From: Marcus Folkesson To: Baolin Wang Cc: dmitry.torokhov@gmail.com, robh+dt@kernel.org, mark.rutland@arm.com, orsonzhai@gmail.com, zhang.lyra@gmail.com, linux-input@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, xiaotong.lu@spreadtrum.com Subject: Re: [PATCH 2/2] input: misc: Add Spreadtrum vibrator driver Message-ID: <20180417072530.GA4629@gmail.com> References: <0bfdc811c2b3da3aa1cde2feef278a86503e3804.1523934640.git.baolin.wang@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Xiaotong, On Tue, Apr 17, 2018 at 11:18:24AM +0800, Baolin Wang wrote: > From: Xiaotong Lu [snip] > +static int sc27xx_vibra_probe(struct platform_device *pdev) > +{ > + struct device_node *node = pdev->dev.of_node; > + struct vibra_info *info; > + int ret; > + > + info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); > + if (!info) > + return -ENOMEM; > + > + info->regmap = dev_get_regmap(pdev->dev.parent, NULL); > + if (!info->regmap) { > + dev_err(&pdev->dev, "failed to get vibrator regmap.\n"); > + return -ENODEV; > + } > + > + ret = of_property_read_u32(node, "reg", &info->base); > + if (ret) { > + dev_err(&pdev->dev, "failed to get vibrator base address.\n"); > + return ret; > + } > + > + info->input_dev = devm_input_allocate_device(&pdev->dev); > + if (!info->input_dev) { > + dev_err(&pdev->dev, "failed to allocate input device.\n"); > + return -ENOMEM; > + } > + > + info->input_dev->name = "sc27xx:vibrator"; > + info->input_dev->id.version = 0; > + info->input_dev->dev.parent = pdev->dev.parent; > + info->input_dev->close = sc27xx_vibra_close; > + > + input_set_drvdata(info->input_dev, info); > + input_set_capability(info->input_dev, EV_FF, FF_RUMBLE); > + INIT_WORK(&info->play_work, sc27xx_vibra_play_work); > + info->enabled = false; > + > + ret = input_ff_create_memless(info->input_dev, NULL, sc27xx_vibra_play); > + if (ret) { > + dev_err(&pdev->dev, "failed to register vibrator to FF.\n"); > + return ret; > + } > + > + ret = input_register_device(info->input_dev); > + if (ret) { > + dev_err(&pdev->dev, "failed to register input device.\n"); > + input_ff_destroy(info->input_dev); I'm not sure how the input_ff is freed for managed devices. Either you don't have to destroy it here, or you also need to destroy it in a release() function. > + return ret; > + } > + > + ret = sc27xx_vibra_hw_init(info); > + if (ret) { > + dev_err(&pdev->dev, "failed to initialize the vibrator.\n"); > + input_ff_destroy(info->input_dev); > + input_unregister_device(info->input_dev); No need to unregister managed input devices. > + return ret; > + } Cheers, Marcus Folkesson