From: Bitterblue Smith <rtl8821cerfe2@gmail.com>
To: "linux-wireless@vger.kernel.org" <linux-wireless@vger.kernel.org>
Cc: Ping-Ke Shih <pkshih@realtek.com>,
Larry Finger <Larry.Finger@lwfinger.net>,
Stefan Lippers-Hollmann <s.l-h@gmx.de>,
Christian Hewitt <chewitt@libreelec.tv>
Subject: [PATCH v7 08/12] wifi: rtlwifi: Add rtl8192du/fw.{c,h} and rtl8192du/led.{c,h}
Date: Thu, 23 May 2024 17:47:19 +0300 [thread overview]
Message-ID: <a52b8907-267c-4811-90ca-5eb852a2aa09@gmail.com> (raw)
In-Reply-To: <8805826b-60b9-4026-9509-7d92c3a43577@gmail.com>
fw.c contains a function for loading the firmware.
led.c contains a function for controlling the LED.
Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
v7:
- No change.
v6:
- Update copyright year.
- Remove some unused includes.
- Make all functions use the prefix "rtl92du".
v5:
- No change.
v4:
- Fix fw.h and led.h header guards.
- Add empty lines.
- Delete globalmutex_for_fwdownload and simplify rtl92d_download_fw.
It can't run in parallel because mutex_for_hw_init in rtl92du_hw_init
protects the entire function.
v3:
- No change.
v2:
- Patch is new in v2, split from patch 3/3 in v1.
---
.../wireless/realtek/rtlwifi/rtl8192du/fw.c | 63 +++++++++++++++++++
.../wireless/realtek/rtlwifi/rtl8192du/fw.h | 9 +++
.../wireless/realtek/rtlwifi/rtl8192du/led.c | 10 +++
.../wireless/realtek/rtlwifi/rtl8192du/led.h | 9 +++
4 files changed, 91 insertions(+)
create mode 100644 drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.c
create mode 100644 drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.h
create mode 100644 drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.c
create mode 100644 drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.h
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.c
new file mode 100644
index 000000000000..f74e4e84fe39
--- /dev/null
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.c
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2024 Realtek Corporation.*/
+
+#include "../wifi.h"
+#include "../rtl8192d/reg.h"
+#include "../rtl8192d/def.h"
+#include "../rtl8192d/fw_common.h"
+#include "fw.h"
+
+int rtl92du_download_fw(struct ieee80211_hw *hw)
+{
+ struct rtl_priv *rtlpriv = rtl_priv(hw);
+ struct rtl_hal *rtlhal = rtl_hal(rtlpriv);
+ enum version_8192d version = rtlhal->version;
+ u8 *pfwheader;
+ u8 *pfwdata;
+ u32 fwsize;
+ int err;
+
+ if (rtlpriv->max_fw_size == 0 || !rtlhal->pfirmware)
+ return 1;
+
+ fwsize = rtlhal->fwsize;
+ pfwheader = rtlhal->pfirmware;
+ pfwdata = rtlhal->pfirmware;
+ rtlhal->fw_version = (u16)GET_FIRMWARE_HDR_VERSION(pfwheader);
+ rtlhal->fw_subversion = (u16)GET_FIRMWARE_HDR_SUB_VER(pfwheader);
+
+ rtl_dbg(rtlpriv, COMP_INIT, DBG_LOUD,
+ "FirmwareVersion(%d), FirmwareSubVersion(%d), Signature(%#x)\n",
+ rtlhal->fw_version, rtlhal->fw_subversion,
+ GET_FIRMWARE_HDR_SIGNATURE(pfwheader));
+
+ if (IS_FW_HEADER_EXIST(pfwheader)) {
+ rtl_dbg(rtlpriv, COMP_INIT, DBG_LOUD,
+ "Shift 32 bytes for FW header!!\n");
+ pfwdata = pfwdata + 32;
+ fwsize = fwsize - 32;
+ }
+
+ if (rtl92d_is_fw_downloaded(rtlpriv))
+ goto exit;
+
+ /* If 8051 is running in RAM code, driver should
+ * inform Fw to reset by itself, or it will cause
+ * download Fw fail.
+ */
+ if (rtl_read_byte(rtlpriv, REG_MCUFWDL) & BIT(7)) {
+ rtl92d_firmware_selfreset(hw);
+ rtl_write_byte(rtlpriv, REG_MCUFWDL, 0x00);
+ }
+
+ rtl92d_enable_fw_download(hw, true);
+ rtl92d_write_fw(hw, version, pfwdata, fwsize);
+ rtl92d_enable_fw_download(hw, false);
+
+ err = rtl92d_fw_free_to_go(hw);
+ if (err)
+ pr_err("fw is not ready to run!\n");
+exit:
+ err = rtl92d_fw_init(hw);
+ return err;
+}
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.h
new file mode 100644
index 000000000000..7904bfbda4ba
--- /dev/null
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/fw.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2024 Realtek Corporation.*/
+
+#ifndef __RTL92DU_FW_H__
+#define __RTL92DU_FW_H__
+
+int rtl92du_download_fw(struct ieee80211_hw *hw);
+
+#endif
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.c b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.c
new file mode 100644
index 000000000000..6c12dfbd6367
--- /dev/null
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.c
@@ -0,0 +1,10 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2024 Realtek Corporation.*/
+
+#include "../wifi.h"
+#include "led.h"
+
+void rtl92du_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction)
+{
+ /* The hardware has control. */
+}
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.h b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.h
new file mode 100644
index 000000000000..d7ebc8afcc7b
--- /dev/null
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192du/led.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2024 Realtek Corporation.*/
+
+#ifndef __RTL92DU_LED_H__
+#define __RTL92DU_LED_H__
+
+void rtl92du_led_control(struct ieee80211_hw *hw, enum led_ctl_mode ledaction);
+
+#endif
--
2.45.1
next prev parent reply other threads:[~2024-05-23 14:47 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-23 14:42 [PATCH v7 00/12] wifi: rtlwifi: Add new rtl8192du driver Bitterblue Smith
2024-05-23 14:43 ` [PATCH v7 01/12] wifi: rtlwifi: rtl8192d: Use "rtl92d" prefix Bitterblue Smith
2024-05-30 2:50 ` Ping-Ke Shih
2024-05-23 14:44 ` [PATCH v7 02/12] wifi: rtlwifi: Add rtl8192du/table.{c,h} Bitterblue Smith
2024-05-23 14:44 ` [PATCH v7 03/12] wifi: rtlwifi: Add new members to struct rtl_priv for RTL8192DU Bitterblue Smith
2024-05-23 14:45 ` [PATCH v7 04/12] wifi: rtlwifi: Add rtl8192du/hw.{c,h} Bitterblue Smith
2024-05-23 14:46 ` [PATCH v7 05/12] wifi: rtlwifi: Add rtl8192du/phy.{c,h} Bitterblue Smith
2024-05-23 14:46 ` [PATCH v7 06/12] wifi: rtlwifi: Add rtl8192du/trx.{c,h} Bitterblue Smith
2024-05-23 14:46 ` [PATCH v7 07/12] wifi: rtlwifi: Add rtl8192du/rf.{c,h} Bitterblue Smith
2024-05-23 14:47 ` Bitterblue Smith [this message]
2024-05-23 14:47 ` [PATCH v7 09/12] wifi: rtlwifi: Add rtl8192du/dm.{c,h} Bitterblue Smith
2024-05-23 14:48 ` [PATCH v7 10/12] wifi: rtlwifi: Constify rtl_hal_cfg.{ops,usb_interface_cfg} and rtl_priv.cfg Bitterblue Smith
2024-05-23 14:48 ` [PATCH v7 11/12] wifi: rtlwifi: Add rtl8192du/sw.c Bitterblue Smith
2024-05-23 14:49 ` [PATCH v7 12/12] wifi: rtlwifi: Enable the new rtl8192du driver Bitterblue Smith
2024-05-27 7:47 ` Ping-Ke Shih
2024-05-27 9:25 ` Stefan Lippers-Hollmann
2024-05-27 23:06 ` Bitterblue Smith
2024-05-28 2:39 ` Ping-Ke Shih
2024-05-28 6:59 ` Johannes Berg
2024-05-28 8:41 ` Ping-Ke Shih
2024-05-28 2:02 ` Ping-Ke Shih
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=a52b8907-267c-4811-90ca-5eb852a2aa09@gmail.com \
--to=rtl8821cerfe2@gmail.com \
--cc=Larry.Finger@lwfinger.net \
--cc=chewitt@libreelec.tv \
--cc=linux-wireless@vger.kernel.org \
--cc=pkshih@realtek.com \
--cc=s.l-h@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.