Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp355725ybh; Wed, 11 Mar 2020 02:25:16 -0700 (PDT) X-Google-Smtp-Source: ADFU+vv9MWFWZSYL+9H4c4hyi/wX2W0SrGw6EZnyVua6wOfSkyMTwBoXJQKRSBGjMm83iEu9WwEf X-Received: by 2002:aca:5057:: with SMTP id e84mr1270037oib.120.1583918716179; Wed, 11 Mar 2020 02:25:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1583918716; cv=none; d=google.com; s=arc-20160816; b=jhNdVSuZQ51xknfGoAUkYW2sBM1mywFlKrz4Hp5K8wFEbN5ynPQ7szAsKbTBA3od0W i9LnvM9QnBRcMnDdXaUh1CknTifRaMKNckPXUz//24NpeuVoBsgWDd3UVUwpBs8Uken9 5R6YxXuRtgIBS+UG0OfAte12O63gOfOWgLWrh6ZVsz4YTETWRjDEiDqwGrz6QmLPBTax lj4aP/PMBtuboDci9XY85zb20uIGjOtRklvH5c0ircLF6S/1Jn/3oNNBGLEqDW/KbqrP NzCklv6FIt3mf7AkVmEziHSLRCJPiTDMZlr0XiMKZl7a2DYoacGxRJQKZQbMdBMIYk2v 4Qow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=oTEgx+0q+wWx+G15t9Th6GjnGh/fBTDFvpJM0EhSSqg=; b=LuGVfY2VV8AGYTjYrpfVrVISZPpJJ+gXVgvZ0EW5FLYOW02j69Me511WOiC8wOsLCY ScR6FJoUDdn8YjYlKr5YV+L7wPYZppZqIyUWBFgcOEbXKjjn3H6ETPgBxHMi4xmys0YU XVsFqCskG+5aHYJJGDi5Lds1YKYtWjJjL8JVOenn4SxDVjZ3LwZKrDN+7hglegtbGoPh 0GXAWul1M6MRHTCWY+gSjE8ZGLLeHneIHwvaSA8hmXMmP/ObVe+1L6QIB7TIS1J0uWN+ C6dgtDkmvquWeN1i6bc28SE4WWoFyeEhw5NkBpJTXMjdvugpSes7H7bSX/LaVJUYQxgP Zbbg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h9si798242oti.155.2020.03.11.02.24.48; Wed, 11 Mar 2020 02:25:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-bluetooth-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728488AbgCKJY1 (ORCPT + 99 others); Wed, 11 Mar 2020 05:24:27 -0400 Received: from mail-lj1-f193.google.com ([209.85.208.193]:42209 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726097AbgCKJY1 (ORCPT ); Wed, 11 Mar 2020 05:24:27 -0400 Received: by mail-lj1-f193.google.com with SMTP id q19so1456590ljp.9; Wed, 11 Mar 2020 02:24:26 -0700 (PDT) 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; bh=oTEgx+0q+wWx+G15t9Th6GjnGh/fBTDFvpJM0EhSSqg=; b=fwxu2w7MMtm/x0hf3Cffk7yAO5eCmJidEVDf7cUyikp7L+Of/ZryD6H873cV9fR4lx a0UWKNzkamTKmkOTh+xfwNH6iP50GbpJwDhVww3NWe8aS9HGQbHgQpKJFGIJJdZH8Osc 9cauMHySd8mtWNKj8k6Q3gb3i/DFIdl2NhF4anpTiNRF/ZljOcYib50hWk9Wi813R+KL TajokvhN+1M/4Xok3Serw40kRx0E/0lwBUOUBccNYKasvLcvUynJXF74bFCT6aOkumsS kp/1eHP40hus1keHPX71IrUYM5CXifL6m6yPVEYwqmSXDktAW9OIYLbdxyrgOzLZnzf1 aKaA== X-Gm-Message-State: ANhLgQ096Y2DDBdIwrOQs7fWcRW5Y3hNZB2gGWJzF6aDFMReezeEkD/e HEcPrgmb1LINnU7+6049OZ8= X-Received: by 2002:a2e:801a:: with SMTP id j26mr1519598ljg.249.1583918665226; Wed, 11 Mar 2020 02:24:25 -0700 (PDT) Received: from xi.terra (c-12aae455.07-184-6d6c6d4.bbcust.telenor.se. [85.228.170.18]) by smtp.gmail.com with ESMTPSA id t3sm14614706lfp.81.2020.03.11.02.24.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Mar 2020 02:24:24 -0700 (PDT) Received: from johan by xi.terra with local (Exim 4.92.3) (envelope-from ) id 1jBxb2-0004UZ-7N; Wed, 11 Mar 2020 10:24:12 +0100 Date: Wed, 11 Mar 2020 10:24:12 +0100 From: Johan Hovold To: Rocky Liao Cc: marcel@holtmann.org, johan.hedberg@gmail.com, linux-kernel@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, bgodavar@codeaurora.org, c-hbandi@codeaurora.org, hemantg@codeaurora.org, mka@chromium.org Subject: Re: [PATCH v1] Bluetooth: hci_qca: Replace devm_gpiod_get() with devm_gpiod_get_optional() Message-ID: <20200311092412.GH14211@localhost> References: <20200304131645.22057-1-rjliao@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200304131645.22057-1-rjliao@codeaurora.org> Sender: linux-bluetooth-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org On Wed, Mar 04, 2020 at 09:16:45PM +0800, Rocky Liao wrote: > This patch replaces devm_gpiod_get() with devm_gpiod_get_optional() to get > bt_en and replaces devm_clk_get() with devm_clk_get_optional() to get > susclk. It also uses NULL check to determine whether the resource is > available or not. > > Fixes: 8a208b24d770 ("Bluetooth: hci_qca: Make bt_en and susclk not mandatory for QCA Rome") > Signed-off-by: Rocky Liao > --- > drivers/bluetooth/hci_qca.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > @@ -1901,15 +1901,15 @@ static int qca_serdev_probe(struct serdev_device *serdev) > } > } else { > qcadev->btsoc_type = QCA_ROME; > - qcadev->bt_en = devm_gpiod_get(&serdev->dev, "enable", > + qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable", > GPIOD_OUT_LOW); > - if (IS_ERR(qcadev->bt_en)) { > + if (!qcadev->bt_en) { > dev_warn(&serdev->dev, "failed to acquire enable gpio\n"); Shouldn't this be dev_dbg() if the gpio is indeed optional? > power_ctrl_enabled = false; > } > > - qcadev->susclk = devm_clk_get(&serdev->dev, NULL); > - if (IS_ERR(qcadev->susclk)) { > + qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL); > + if (!qcadev->susclk) { > dev_warn(&serdev->dev, "failed to acquire clk\n"); Same here. > } else { > err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ); > @@ -1924,7 +1924,7 @@ static int qca_serdev_probe(struct serdev_device *serdev) > err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto); > if (err) { > BT_ERR("Rome serdev registration failed"); > - if (!IS_ERR(qcadev->susclk)) > + if (qcadev->susclk) > clk_disable_unprepare(qcadev->susclk); The clock framework allows you to pass in NULL precisely to be able to handle optional resources without sprinkling conditionals all over (the gpio subsystem does not however). Applies to clk_set_rate() etc. above as well. > return err; > } > @@ -1945,7 +1945,7 @@ static void qca_serdev_remove(struct serdev_device *serdev) > > if (qca_is_wcn399x(qcadev->btsoc_type)) > qca_power_shutdown(&qcadev->serdev_hu); > - else if (!IS_ERR(qcadev->susclk)) > + else if (qcadev->susclk) > clk_disable_unprepare(qcadev->susclk); Same here. > hci_uart_unregister_device(&qcadev->serdev_hu); Johan