[PATCH 7/7] Bluetooth: hci_aml: configure the RF for a shared antenna
From: christian . koever-draxl
Date: Sun Oct 25 2026 - 15:36:39 EST
From: Christian Stefan Kövér-Draxl <ckoever@xxxxxxxxxx>
The RF configuration selects the single antenna setting only for parts
flagged as coexistence capable. On an S905W2 TV box with a W155S2-class
W1 chip, Bluetooth and Wi-Fi share one antenna; with the default dual
antenna setting the received signal is about 15 dB weaker.
Use the single antenna setting when the board sets
amlogic,shared-antenna.
Signed-off-by: Christian Stefan Kövér-Draxl <ckoever@xxxxxxxxxx>
---
drivers/bluetooth/hci_aml.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/bluetooth/hci_aml.c b/drivers/bluetooth/hci_aml.c
index d1b83f7bd388..dc797ab665b9 100644
--- a/drivers/bluetooth/hci_aml.c
+++ b/drivers/bluetooth/hci_aml.c
@@ -123,6 +123,7 @@ struct aml_serdev {
struct clk *lpo_clk;
const struct aml_device_data *aml_dev_data;
const char *firmware_name;
+ bool shared_antenna;
bool powered;
};
@@ -569,6 +570,9 @@ static int aml_parse_dt(struct aml_serdev *amldev)
return -ENODEV;
}
+ amldev->shared_antenna = device_property_read_bool(pdev,
+ "amlogic,shared-antenna");
+
amldev->bt_supply = devm_regulator_get(pdev, "vddio");
if (IS_ERR(amldev->bt_supply)) {
dev_err(pdev, "Failed to acquire regulator");
@@ -696,6 +700,8 @@ static int aml_flush(struct hci_uart *hu)
static int aml_setup_controller(struct hci_uart *hu, struct aml_serdev *amldev,
struct hci_dev *hdev)
{
+ bool single_antenna = amldev->aml_dev_data->is_coex ||
+ amldev->shared_antenna;
int err;
int i;
@@ -717,7 +723,7 @@ static int aml_setup_controller(struct hci_uart *hu, struct aml_serdev *amldev,
if (err)
return err;
- err = aml_config_rf(hdev, amldev->aml_dev_data->is_coex);
+ err = aml_config_rf(hdev, single_antenna);
if (err)
return err;
--
2.56.0