Received: by 10.192.165.156 with SMTP id m28csp1547254imm; Tue, 17 Apr 2018 00:51:17 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+AQCurN4selNiBIbwhvo+BcVzvli3apErNi2yZpOiz4PW8HtPrTOVei2K4IJ5FAASRSnKi X-Received: by 10.99.8.194 with SMTP id 185mr930353pgi.17.1523951477896; Tue, 17 Apr 2018 00:51:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523951477; cv=none; d=google.com; s=arc-20160816; b=Ox1FXUCcRQHlmxhRKxEquWtPR5xl/Hedpm+vtJylzFNVLreLgn9ucY5oUm0rYORlw6 xPnnc/xot7hitRB/dsmPO+iBLlUJ7f3Rdv89Dvico3T7JTUet2+n5ErDUuZaQu6pI954 VHw8yeAvaCR3kiARrTnCSG3yDImDUzthZUjs2CUnQACbaUXCKzjfrEfzrXUrlZ/zrGuf TrtaBUAYno70bx/AaDFHkP796SrWqC7Dq8C2v0OpKA7wslcqTRmZF7sGkTHEGijKusfn knslgwv8dTZd0aji7eph9Ff87gC5/zWwILxxIGOojXj3+XENTELk2Zitcw62Wnbw8Kew qhRQ== 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=KzXYlgLw6ZmKainGvb+FubfLJAkou1kkmM/oHz8Jwhc=; b=LfrvmJD5eV7/fS28xW8M+IoSYeVFH4hwL8C9d9MDPPIHUGdUlUxMHeMtTBQ3CaTftg aockSdiyt4woQfVeXXfa7ZV3B7Y89iGihTDkISKOnKbKyEDn5JRJ9gqZqCweoP46oHHH DtrUJN+Jgjg20g6p10q/w6L63W4buM1b2SPZn30ddP6YV0ZV0a3N+HSEBodDvoCqWFil LBz8SL7aybQvXu5eCsjOzqPNZ7QGUksFGEjq/Y0fo7UfH2pfadE9nuhUz+EZV8ZjsZni H9NR3vFnyiqbzYJEkJCaLcpl/ov2etRKT1wGOCuDbtZI3/l3gPOfiPKdqBwmhd+XZ5Mq Gy3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=CaoQjUo8; 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 y7-v6si13629371plt.287.2018.04.17.00.51.03; Tue, 17 Apr 2018 00:51:17 -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=@linaro.org header.s=google header.b=CaoQjUo8; 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 S1751252AbeDQHt7 (ORCPT + 99 others); Tue, 17 Apr 2018 03:49:59 -0400 Received: from mail-oi0-f43.google.com ([209.85.218.43]:33111 "EHLO mail-oi0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750967AbeDQHt4 (ORCPT ); Tue, 17 Apr 2018 03:49:56 -0400 Received: by mail-oi0-f43.google.com with SMTP id 126-v6so17074432oig.0 for ; Tue, 17 Apr 2018 00:49:56 -0700 (PDT) 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=KzXYlgLw6ZmKainGvb+FubfLJAkou1kkmM/oHz8Jwhc=; b=CaoQjUo8poUUS98unppeHPAlvq+PCCrYKc45jvFg2J/N4A9NhRhj2ylDuXY598eCKB +PEi+aDWNJbYZE33HXpoi1eMtKnLwRnFcYqZcFBwmNsmSr2TheCCdaMBo9GpKVH3TKJZ s4rakF9YtCuSwwfK2hW2SfvhmSBuOlZHZsLf8= 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=KzXYlgLw6ZmKainGvb+FubfLJAkou1kkmM/oHz8Jwhc=; b=mo70mI5ElaDudgFBn65qxLWrFU8qTIElNqA9F+HMIhIwHz4pNLyme1zJMhFS2G/Zvf 8ehSD8ujlFZvwt8xhKsa0e7/iQyBtgy2s65+/BRQHPWtzEO26Mwn4uNxNyv8nxrFz07d 7DzBo8gXa+hkVdCP9jdxRclSZ3qsc39VAGgyUP39aE1XVfy4ixJIKZ5XAjVBLEDtUO2m jAZ0qFex+qXilfRNIcWOWiyCrxsVguj3C3e3+C/VnRknhnRmJx8PBmx0p83XQYKeGE+O NL3iMe4VNRz0C+Z/UfTNDXqUr/g9FlPtQgSUvbTFa13dZhcD/P1DhqqV2Z0t2Z6c37xZ 4ROw== X-Gm-Message-State: ALQs6tBNCXFcuQcY4MjCBR5NUJBK0ZsI1Yj1hY8PqxGt5MzCZKaMACsP KPBEuCJBYPfmm/O8x9LZrY25hOpG64wj5+NWSeYC7A== X-Received: by 2002:aca:e748:: with SMTP id e69-v6mr575129oih.350.1523951396320; Tue, 17 Apr 2018 00:49:56 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a9d:7081:0:0:0:0:0 with HTTP; Tue, 17 Apr 2018 00:49:55 -0700 (PDT) In-Reply-To: <20180417072530.GA4629@gmail.com> References: <0bfdc811c2b3da3aa1cde2feef278a86503e3804.1523934640.git.baolin.wang@linaro.org> <20180417072530.GA4629@gmail.com> From: Baolin Wang Date: Tue, 17 Apr 2018 15:49:55 +0800 Message-ID: Subject: Re: [PATCH 2/2] input: misc: Add Spreadtrum vibrator driver To: Marcus Folkesson Cc: Dmitry Torokhov , Rob Herring , Mark Rutland , Orson Zhai , Chunyan Zhang , "open list:HID CORE LAYER" , DTML , LKML , xiaotong.lu@spreadtrum.com 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 Marcus, On 17 April 2018 at 15:25, Marcus Folkesson wrote: > 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. I checked again, we do not need to destroy it manually. Will remove in next version. > >> + 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. You are correct. Will remove these in next version. Thanks for your comments. -- Baolin.wang Best Regards