Received: by 2002:ab2:620c:0:b0:1ef:ffd0:ce49 with SMTP id o12csp140633lqt; Mon, 18 Mar 2024 04:10:07 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCVzBIHfeslZoe3Hmp2//7fDrZSyJHlV1AEEKNgNj8xdpk6lnvY+s37lXwF275RFAqqEQ6j2PJImxt14kU3WJhV7k+euY1IO+Tl9JXEbxA== X-Google-Smtp-Source: AGHT+IF9t4L2S77J/vD3DO0Auk2GE6prBdlRq48ABVYi5yc0+4M2vJDJzHcse9vIhX7CmmqhFyQn X-Received: by 2002:a05:620a:2005:b0:789:f8b3:d89d with SMTP id c5-20020a05620a200500b00789f8b3d89dmr3737535qka.46.1710760207403; Mon, 18 Mar 2024 04:10:07 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710760207; cv=pass; d=google.com; s=arc-20160816; b=ubez2R/DT0OOSFTF0fIFPI+50iaW/uZmPFi36riKHk1mu7/XbPCfQwOLlbJE7H18Fg Ja5b0x+jYgYZ6MZ7s38iiHmJiLsuaeRiQ7kvLvvO1a87RR/8f8OIxfcaJROS2VPuw9b/ BSdNkxQLXEvO33bYcDVsBnaDCykbhgNiRDH7eyV4ooOITAhXBZtiZMPnxc3sr122Y6QM p3SDfc8G4dZK6NYY78XxbjowunRw8DuZY1PY4ChYCvShvbCzTKGZxPlV9yecBVHUtuGa n/E5jsbv4GmI8tqoyZNUCoXRW1oQC2Q3iYuQMXswhRjoFDxLOAEc5F93JFxxuCZqE1B4 o6sA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=VzCA7MtnNvZExGITFicepjh4z+RCLX2yrQ8fgqtD/60=; fh=IGN16hlsAYKlRZRvRpjxjWab3jSFCa99AVdVJUpRBYk=; b=uQeGqvfF9UDIihUj8WXnIwKcA9FfzX9mRgzC4GxUYqt1MfrMI6OMADI1sdrvpA67qo G4DALnFJThVff5W+6vFLR41CgAQAMRy1xrl2JvMtKLVE6G/Fd1FjbI5eZ+K1kgnmojO3 yKEdQ7tTsJZ0B/tMkUlUByap2Hek8mrDa0fyQTES536RQBcXEgi3G7BIHePs4KHf+1nh U4absqKKCWrs/tIFlqQAjm8K/Oc+EO0csfKzocKYcYkTl6Rtyah2rMxNSK3a7oArZ5a2 /vnOPgiQ3R6QlAjvllLT9MhUjDA6tq3K1DAAjPHRHehGrsaxtuVL3JcbnHx5PGA68nrB qThw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DHqV08Sn; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-bluetooth+bounces-2575-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-2575-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id u27-20020a05620a085b00b0078825c54209si7083469qku.465.2024.03.18.04.10.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 04:10:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth+bounces-2575-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=DHqV08Sn; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-bluetooth+bounces-2575-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-bluetooth+bounces-2575-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 262401C213EA for ; Mon, 18 Mar 2024 11:10:07 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 53C63383A3; Mon, 18 Mar 2024 11:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DHqV08Sn" X-Original-To: linux-bluetooth@vger.kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CAA6364A4; Mon, 18 Mar 2024 11:08:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710760139; cv=none; b=sBvpcr6p2mUKSeG6u+A+IlkRBxkPuMnlvWLOhqohTqpMRqF+a7DDAR9/uIXfFnXDa1zdJ3E4OgLhTG6Y6vBzYguVgHjKN+gPtRYtdraFpegbQtEGXskbwmSvjtBkaHORIS365mQqgOLhfQO/anoCzmDNQ0YC6GJTuBbRIeTTK7Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710760139; c=relaxed/simple; bh=IkqXsf80aD3AGxwdY+jhdtqTqWS35qqFvr4ZSgDa2Xg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GXpk6YMMZj/j0sbjS080xLM8Xhcv1qpWzitmUatZf4wgGciksAsrLkrnCcdtYRUbrXkqd+y09wumsuFkkvGSDLOAgjSxbIsJFWEcD9wHhyNzZFGc8q/8UwWqizJWk9SijrqHlZYL0pYUSx7g2Vu0YeP1eyCRLWC2mAw2EoQTF/E= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DHqV08Sn; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2E102C43390; Mon, 18 Mar 2024 11:08:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710760139; bh=IkqXsf80aD3AGxwdY+jhdtqTqWS35qqFvr4ZSgDa2Xg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=DHqV08Snc3Tt5Pe7MU8wwT9wFDWUmwpyYnYje2cQ1wzsNM6rCX0kkZmVSaq9PZS9L OsuW6KeozvRFAaQEcG2QjOdwVdXOL5SP/SR6ftEtZa4rbNcMAO5nq1C0JwP36VWI/6 PgT7jn5CTU6BVM+19GsIDPd0VHuko5lxGoXsxxfg7bZX8+yJrgQ0qWecOBF2fkF3Z9 GpawddXktnw8cSGNGpMEyWED1dcr8c9BSEZvUWTQcfRgUHM5VUoLwbVWDQ5pv+cH46 eE7ttyzM3cam1bG1SvVQB7P45i7555QnvkXsKJAV8SpVLZI/h1ey0xaaJI9EnPd47X g/tyeoX/YdZRA== Received: from johan by xi.lan with local (Exim 4.97.1) (envelope-from ) id 1rmArY-000000008Jn-3Nlm; Mon, 18 Mar 2024 12:09:04 +0100 From: Johan Hovold To: Marcel Holtmann , Luiz Augusto von Dentz Cc: Rob Herring , Krzysztof Kozlowski , Conor Dooley , Johan Hedberg , Matthias Kaehlcke , Doug Anderson , Bjorn Andersson , Konrad Dybcio , linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org Subject: [PATCH v2 2/4] Bluetooth: add quirk for broken address properties Date: Mon, 18 Mar 2024 12:08:53 +0100 Message-ID: <20240318110855.31954-3-johan+linaro@kernel.org> X-Mailer: git-send-email 2.43.2 In-Reply-To: <20240318110855.31954-1-johan+linaro@kernel.org> References: <20240318110855.31954-1-johan+linaro@kernel.org> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Some Bluetooth controllers lack persistent storage for the device address and instead one can be provided by the boot firmware using the 'local-bd-address' devicetree property. The Bluetooth devicetree bindings clearly states that the address should be specified in little-endian order, but due to a long-standing bug in the Qualcomm driver which reversed the address some bootloaders have been providing the address in big-endian order instead. Add a new quirk that can be used to mark deprecated compatible strings that expect such broken devicetree properties and use it to reverse the address when parsing the property so that the underlying driver bug can be fixed. Fixes: 5c0a1001c8be ("Bluetooth: hci_qca: Add helper to set device address") Cc: stable@vger.kernel.org # 5.1 Signed-off-by: Johan Hovold --- include/net/bluetooth/hci.h | 10 ++++++++++ net/bluetooth/hci_sync.c | 5 ++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index bdee5d649cc6..556cffed5698 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h @@ -176,6 +176,16 @@ enum { */ HCI_QUIRK_USE_BDADDR_PROPERTY, + /* When this quirk is set, the Bluetooth Device Address provided by + * the 'local-bd-address' fwnode property is incorrectly specified in + * big-endian order. + * + * This quirk can be set before hci_register_dev is called or + * during the hdev->setup vendor callback and must only be used for + * deprecated compatible strings. + */ + HCI_QUIRK_BDADDR_PROPERTY_BROKEN, + /* When this quirk is set, the duplicate filtering during * scanning is based on Bluetooth devices addresses. To allow * RSSI based updates, restart scanning if needed. diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 5716345a26df..283ae8edc1e5 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -3215,7 +3215,10 @@ static void hci_dev_get_bd_addr_from_property(struct hci_dev *hdev) if (ret < 0 || !bacmp(&ba, BDADDR_ANY)) return; - bacpy(&hdev->public_addr, &ba); + if (test_bit(HCI_QUIRK_BDADDR_PROPERTY_BROKEN, &hdev->quirks)) + baswap(&hdev->public_addr, &ba); + else + bacpy(&hdev->public_addr, &ba); } struct hci_init_stage { -- 2.43.2