aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2025-12-05 20:48:01 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2025-12-05 21:28:01 +0000
commite543442afe3ad5b27616575be2d2402b988656eb (patch)
tree27c762815312eb825f3606eb2849718b5d206dca
parentc1d365f39e083bb66a6e278939cd194026984d2f (diff)
rtw88: update Realtek's rtw88 drivervendor/Linux/rtw88/torvalds-v6.18vendor/Linux/rtw88
This version is based on git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 7d0a66e4bb9081d75c82ec4957c50034cb0ea449 ( tag: v6.18 ). Sponsored by: The FreeBSD Foundation
-rw-r--r--led.c13
-rw-r--r--sdio.c4
2 files changed, 11 insertions, 6 deletions
diff --git a/led.c b/led.c
index 25aa6cbaa728..4cc62e49d167 100644
--- a/led.c
+++ b/led.c
@@ -6,13 +6,17 @@
#include "debug.h"
#include "led.h"
-static int rtw_led_set_blocking(struct led_classdev *led,
- enum led_brightness brightness)
+static int rtw_led_set(struct led_classdev *led,
+ enum led_brightness brightness)
{
struct rtw_dev *rtwdev = container_of(led, struct rtw_dev, led_cdev);
+ mutex_lock(&rtwdev->mutex);
+
rtwdev->chip->ops->led_set(led, brightness);
+ mutex_unlock(&rtwdev->mutex);
+
return 0;
}
@@ -36,10 +40,7 @@ void rtw_led_init(struct rtw_dev *rtwdev)
if (!rtwdev->chip->ops->led_set)
return;
- if (rtw_hci_type(rtwdev) == RTW_HCI_TYPE_PCIE)
- led->brightness_set = rtwdev->chip->ops->led_set;
- else
- led->brightness_set_blocking = rtw_led_set_blocking;
+ led->brightness_set_blocking = rtw_led_set;
snprintf(rtwdev->led_name, sizeof(rtwdev->led_name),
"rtw88-%s", dev_name(rtwdev->dev));
diff --git a/sdio.c b/sdio.c
index cc2d4fef3587..99d7c629eac6 100644
--- a/sdio.c
+++ b/sdio.c
@@ -144,6 +144,10 @@ static u32 rtw_sdio_to_io_address(struct rtw_dev *rtwdev, u32 addr,
static bool rtw_sdio_use_direct_io(struct rtw_dev *rtwdev, u32 addr)
{
+ if (!test_bit(RTW_FLAG_POWERON, rtwdev->flags) &&
+ !rtw_sdio_is_bus_addr(addr))
+ return false;
+
return !rtw_sdio_is_sdio30_supported(rtwdev) ||
rtw_sdio_is_bus_addr(addr);
}