From patchwork Fri Sep 1 20:41:18 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 808989 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="FysQ0s89"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xkWPL5g2tz9sMN for ; Sat, 2 Sep 2017 06:41:42 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752575AbdIAUla (ORCPT ); Fri, 1 Sep 2017 16:41:30 -0400 Received: from mail-pg0-f46.google.com ([74.125.83.46]:36879 "EHLO mail-pg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752544AbdIAUl1 (ORCPT ); Fri, 1 Sep 2017 16:41:27 -0400 Received: by mail-pg0-f46.google.com with SMTP id 83so3454434pgb.4 for ; Fri, 01 Sep 2017 13:41:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4Rf8ndpWW1sw2iJAqd5uL7qxUVkzxRpG+4l/4J0+tRU=; b=FysQ0s89zHTw44uLY8kMmPt6im8KgrWTUVt0GrS8rKLEmSbzYCpnHbiaXY0WCx/oAu JjKmSk1BCONUVhRvY5EoZa3gA9ykBbsmV02JKBixRO0Khcha/MlA7udxtypAp+7/4dnG BvgExkrs2JZlnl59h95v8Y/A9PrT/jkmZtA2g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4Rf8ndpWW1sw2iJAqd5uL7qxUVkzxRpG+4l/4J0+tRU=; b=SfvI/uxBMKwVMSwsrYaBjbZbn0uifzowILsgg108O377+CUWZx4tJTXun5GQwZOT1t 4kjjNvLbERd9iyhyYj2zC2DGjYKirHEJ/XKA/7Dvt9VHyEZp+HnRVxQEVoA3mi2GWzDQ pThxHEiVgprDMAL6wkS7z2Np3YVLVBV+LxBXykBrcu+lK401evh6by9vK1C+vORzjp3n bZ93se+s+bc6EA7PEx2JceWlLLGHF3xNgNy+xSHSOYh9VGDETtdljU3+C0hpurTHGoXP C2w1IDtpV9uOmIalNVFhCbwujXnWMOi9AihGezW7/D76mg2SUl75mGoxJKmBQY7AyMVz 7cKg== X-Gm-Message-State: AHPjjUhTGsBV99AyJzqDBKf0c3u6aUxI26/50GYfVxpWvmS+uRyTmk+v z5xvaJLrbGEfr03RhY77LA== X-Google-Smtp-Source: ADKCNb4D89VchOYiulZ3iquAs4IL4I9TZfrMEwc+EfXmUj5XiuaGqlP5mG8FsxUwEK3EEFwz9yZGfg== X-Received: by 10.84.241.135 with SMTP id b7mr611786pll.425.1504298486585; Fri, 01 Sep 2017 13:41:26 -0700 (PDT) Received: from localhost.localdomain (ip68-111-217-79.sd.sd.cox.net. [68.111.217.79]) by smtp.gmail.com with ESMTPSA id e5sm1279660pgn.57.2017.09.01.13.41.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Sep 2017 13:41:26 -0700 (PDT) From: Bjorn Andersson To: Marcel Holtmann , Gustavo Padovan , Johan Hedberg Cc: "David S. Miller" , linux-bluetooth@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Loic Poulain Subject: [PATCH 2/2] Bluetooth: btqcomsmd: BD address setup Date: Fri, 1 Sep 2017 13:41:18 -0700 Message-Id: <20170901204118.17123-3-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170901204118.17123-1-bjorn.andersson@linaro.org> References: <20170901204118.17123-1-bjorn.andersson@linaro.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Loic Poulain Bluetooth BD address can be retrieved in the same way as for wcnss-wlan MAC address. This patch mainly stores the local-mac-address property and sets the BD address during hci device setup. Signed-off-by: Loic Poulain Signed-off-by: Bjorn Andersson --- drivers/bluetooth/btqcomsmd.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/bluetooth/btqcomsmd.c b/drivers/bluetooth/btqcomsmd.c index d00c4fdae924..443bb2099329 100644 --- a/drivers/bluetooth/btqcomsmd.c +++ b/drivers/bluetooth/btqcomsmd.c @@ -26,6 +26,7 @@ struct btqcomsmd { struct hci_dev *hdev; + const bdaddr_t *addr; struct rpmsg_endpoint *acl_channel; struct rpmsg_endpoint *cmd_channel; }; @@ -100,6 +101,27 @@ static int btqcomsmd_close(struct hci_dev *hdev) return 0; } +static int btqcomsmd_setup(struct hci_dev *hdev) +{ + struct btqcomsmd *btq = hci_get_drvdata(hdev); + struct sk_buff *skb; + + skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT); + if (IS_ERR(skb)) + return PTR_ERR(skb); + kfree_skb(skb); + + if (btq->addr) { + bdaddr_t bdaddr; + + /* btq->addr stored with most significant byte first */ + baswap(&bdaddr, btq->addr); + return qca_set_bdaddr_rome(hdev, &bdaddr); + } + + return 0; +} + static int btqcomsmd_probe(struct platform_device *pdev) { struct btqcomsmd *btq; @@ -123,6 +145,11 @@ static int btqcomsmd_probe(struct platform_device *pdev) if (IS_ERR(btq->cmd_channel)) return PTR_ERR(btq->cmd_channel); + btq->addr = of_get_property(pdev->dev.of_node, "local-mac-address", + &ret); + if (ret != sizeof(bdaddr_t)) + btq->addr = NULL; + hdev = hci_alloc_dev(); if (!hdev) return -ENOMEM; @@ -135,6 +162,7 @@ static int btqcomsmd_probe(struct platform_device *pdev) hdev->open = btqcomsmd_open; hdev->close = btqcomsmd_close; hdev->send = btqcomsmd_send; + hdev->setup = btqcomsmd_setup; hdev->set_bdaddr = qca_set_bdaddr_rome; ret = hci_register_dev(hdev);