From: Kalle Valo <kvalo@codeaurora.org>
To: ath11k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Subject: [PATCH 07/12] ath11k: don't use defines for hw specific firmware directories
Date: Tue, 16 Jun 2020 17:00:50 +0300 [thread overview]
Message-ID: <1592316055-24958-8-git-send-email-kvalo@codeaurora.org> (raw)
In-Reply-To: <1592316055-24958-1-git-send-email-kvalo@codeaurora.org>
The downside of using defines in struct ath11k_hw_params.fw.dir is that it's
easy to get it wrong as the full path is not visible. So drop the use of
defines and instead create the patch runtime using a static inline function
ath11k_core_create_firmware_path(). Hopefully this reduces the chances of using
incorrect firmware path.
No functional changes. Compile tested only.
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/ath/ath11k/core.c | 23 ++++++++---------------
drivers/net/wireless/ath/ath11k/core.h | 11 +++++++++--
drivers/net/wireless/ath/ath11k/hw.h | 1 -
drivers/net/wireless/ath/ath11k/qmi.c | 2 +-
4 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 7e29977c23b4..de5b1d20771a 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -22,7 +22,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
.hw_rev = ATH11K_HW_IPQ8074,
.name = "ipq8074 hw2.0",
.fw = {
- .dir = IPQ8074_FW_DIR,
+ .dir = "IPQ8074/hw2.0",
.board_size = IPQ8074_MAX_BOARD_DATA_SZ,
.cal_size = IPQ8074_MAX_CAL_DATA_SZ,
},
@@ -49,27 +49,23 @@ static int ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
}
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
- const char *dir,
const char *file)
{
- char filename[100];
const struct firmware *fw;
+ char path[100];
int ret;
if (file == NULL)
return ERR_PTR(-ENOENT);
- if (dir == NULL)
- dir = ".";
+ ath11k_core_create_firmware_path(ab, file, path, sizeof(path));
- snprintf(filename, sizeof(filename), "%s/%s", dir, file);
-
- ret = firmware_request_nowarn(&fw, filename, ab->dev);
+ ret = firmware_request_nowarn(&fw, path, ab->dev);
if (ret)
return ERR_PTR(ret);
ath11k_dbg(ab, ATH11K_DBG_BOOT, "boot firmware request %s size %zu\n",
- filename, fw->size);
+ path, fw->size);
return fw;
}
@@ -175,9 +171,8 @@ static int ath11k_core_fetch_board_data_api_n(struct ath11k_base *ab,
int ret, ie_id;
if (!bd->fw)
- bd->fw = ath11k_core_firmware_request(ab,
- ab->hw_params.fw.dir,
- filename);
+ bd->fw = ath11k_core_firmware_request(ab, filename);
+
if (IS_ERR(bd->fw))
return PTR_ERR(bd->fw);
@@ -267,9 +262,7 @@ static int ath11k_core_fetch_board_data_api_n(struct ath11k_base *ab,
static int ath11k_core_fetch_board_data_api_1(struct ath11k_base *ab,
struct ath11k_board_data *bd)
{
- bd->fw = ath11k_core_firmware_request(ab,
- ab->hw_params.fw.dir,
- ATH11K_DEFAULT_BOARD_FILE);
+ bd->fw = ath11k_core_firmware_request(ab, ATH11K_DEFAULT_BOARD_FILE);
if (IS_ERR(bd->fw))
return PTR_ERR(bd->fw);
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index be1339a5ea0a..b6ccd9f93853 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -862,8 +862,7 @@ void ath11k_core_free_bdf(struct ath11k_base *ab, struct ath11k_board_data *bd);
void ath11k_core_halt(struct ath11k *ar);
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
- const char *dir,
- const char *file);
+ const char *filename);
static inline const char *ath11k_scan_state_str(enum ath11k_scan_state state)
{
@@ -897,4 +896,12 @@ static inline struct ath11k_vif *ath11k_vif_to_arvif(struct ieee80211_vif *vif)
return (struct ath11k_vif *)vif->drv_priv;
}
+static inline void ath11k_core_create_firmware_path(struct ath11k_base *ab,
+ const char *filename,
+ void *buf, size_t buf_len)
+{
+ snprintf(buf, buf_len, "%s/%s/%s", ATH11K_FW_DIR,
+ ab->hw_params.fw.dir, filename);
+}
+
#endif /* _CORE_H_ */
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index 78518e3f773d..828c8c076218 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -69,7 +69,6 @@
#define ATH11K_FW_DIR "ath11k"
/* IPQ8074 definitions */
-#define IPQ8074_FW_DIR ATH11K_FW_DIR "/IPQ8074/hw2.0"
#define IPQ8074_MAX_BOARD_DATA_SZ (256 * 1024)
#define IPQ8074_MAX_CAL_DATA_SZ IPQ8074_MAX_BOARD_DATA_SZ
diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c
index 0cd3fb8eeece..d9ffdf84ccae 100644
--- a/drivers/net/wireless/ath/ath11k/qmi.c
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
@@ -1810,7 +1810,7 @@ ath11k_qmi_prepare_bdf_download(struct ath11k_base *ab, int type,
ath11k_core_free_bdf(ab, &bd);
break;
case ATH11K_QMI_FILE_TYPE_CALDATA:
- fw_entry = ath11k_core_firmware_request(ab, ab->hw_params.fw.dir,
+ fw_entry = ath11k_core_firmware_request(ab,
ATH11K_QMI_DEFAULT_CAL_FILE_NAME);
if (ret) {
ath11k_warn(ab, "failed to load %s: %d\n",
--
2.7.4
_______________________________________________
ath11k mailing list
ath11k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath11k
WARNING: multiple messages have this Message-ID (diff)
From: Kalle Valo <kvalo@codeaurora.org>
To: ath11k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Subject: [PATCH 07/12] ath11k: don't use defines for hw specific firmware directories
Date: Tue, 16 Jun 2020 17:00:50 +0300 [thread overview]
Message-ID: <1592316055-24958-8-git-send-email-kvalo@codeaurora.org> (raw)
In-Reply-To: <1592316055-24958-1-git-send-email-kvalo@codeaurora.org>
The downside of using defines in struct ath11k_hw_params.fw.dir is that it's
easy to get it wrong as the full path is not visible. So drop the use of
defines and instead create the patch runtime using a static inline function
ath11k_core_create_firmware_path(). Hopefully this reduces the chances of using
incorrect firmware path.
No functional changes. Compile tested only.
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
---
drivers/net/wireless/ath/ath11k/core.c | 23 ++++++++---------------
drivers/net/wireless/ath/ath11k/core.h | 11 +++++++++--
drivers/net/wireless/ath/ath11k/hw.h | 1 -
drivers/net/wireless/ath/ath11k/qmi.c | 2 +-
4 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 7e29977c23b4..de5b1d20771a 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -22,7 +22,7 @@ static const struct ath11k_hw_params ath11k_hw_params[] = {
.hw_rev = ATH11K_HW_IPQ8074,
.name = "ipq8074 hw2.0",
.fw = {
- .dir = IPQ8074_FW_DIR,
+ .dir = "IPQ8074/hw2.0",
.board_size = IPQ8074_MAX_BOARD_DATA_SZ,
.cal_size = IPQ8074_MAX_CAL_DATA_SZ,
},
@@ -49,27 +49,23 @@ static int ath11k_core_create_board_name(struct ath11k_base *ab, char *name,
}
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
- const char *dir,
const char *file)
{
- char filename[100];
const struct firmware *fw;
+ char path[100];
int ret;
if (file == NULL)
return ERR_PTR(-ENOENT);
- if (dir == NULL)
- dir = ".";
+ ath11k_core_create_firmware_path(ab, file, path, sizeof(path));
- snprintf(filename, sizeof(filename), "%s/%s", dir, file);
-
- ret = firmware_request_nowarn(&fw, filename, ab->dev);
+ ret = firmware_request_nowarn(&fw, path, ab->dev);
if (ret)
return ERR_PTR(ret);
ath11k_dbg(ab, ATH11K_DBG_BOOT, "boot firmware request %s size %zu\n",
- filename, fw->size);
+ path, fw->size);
return fw;
}
@@ -175,9 +171,8 @@ static int ath11k_core_fetch_board_data_api_n(struct ath11k_base *ab,
int ret, ie_id;
if (!bd->fw)
- bd->fw = ath11k_core_firmware_request(ab,
- ab->hw_params.fw.dir,
- filename);
+ bd->fw = ath11k_core_firmware_request(ab, filename);
+
if (IS_ERR(bd->fw))
return PTR_ERR(bd->fw);
@@ -267,9 +262,7 @@ static int ath11k_core_fetch_board_data_api_n(struct ath11k_base *ab,
static int ath11k_core_fetch_board_data_api_1(struct ath11k_base *ab,
struct ath11k_board_data *bd)
{
- bd->fw = ath11k_core_firmware_request(ab,
- ab->hw_params.fw.dir,
- ATH11K_DEFAULT_BOARD_FILE);
+ bd->fw = ath11k_core_firmware_request(ab, ATH11K_DEFAULT_BOARD_FILE);
if (IS_ERR(bd->fw))
return PTR_ERR(bd->fw);
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index be1339a5ea0a..b6ccd9f93853 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -862,8 +862,7 @@ void ath11k_core_free_bdf(struct ath11k_base *ab, struct ath11k_board_data *bd);
void ath11k_core_halt(struct ath11k *ar);
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
- const char *dir,
- const char *file);
+ const char *filename);
static inline const char *ath11k_scan_state_str(enum ath11k_scan_state state)
{
@@ -897,4 +896,12 @@ static inline struct ath11k_vif *ath11k_vif_to_arvif(struct ieee80211_vif *vif)
return (struct ath11k_vif *)vif->drv_priv;
}
+static inline void ath11k_core_create_firmware_path(struct ath11k_base *ab,
+ const char *filename,
+ void *buf, size_t buf_len)
+{
+ snprintf(buf, buf_len, "%s/%s/%s", ATH11K_FW_DIR,
+ ab->hw_params.fw.dir, filename);
+}
+
#endif /* _CORE_H_ */
diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h
index 78518e3f773d..828c8c076218 100644
--- a/drivers/net/wireless/ath/ath11k/hw.h
+++ b/drivers/net/wireless/ath/ath11k/hw.h
@@ -69,7 +69,6 @@
#define ATH11K_FW_DIR "ath11k"
/* IPQ8074 definitions */
-#define IPQ8074_FW_DIR ATH11K_FW_DIR "/IPQ8074/hw2.0"
#define IPQ8074_MAX_BOARD_DATA_SZ (256 * 1024)
#define IPQ8074_MAX_CAL_DATA_SZ IPQ8074_MAX_BOARD_DATA_SZ
diff --git a/drivers/net/wireless/ath/ath11k/qmi.c b/drivers/net/wireless/ath/ath11k/qmi.c
index 0cd3fb8eeece..d9ffdf84ccae 100644
--- a/drivers/net/wireless/ath/ath11k/qmi.c
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
@@ -1810,7 +1810,7 @@ ath11k_qmi_prepare_bdf_download(struct ath11k_base *ab, int type,
ath11k_core_free_bdf(ab, &bd);
break;
case ATH11K_QMI_FILE_TYPE_CALDATA:
- fw_entry = ath11k_core_firmware_request(ab, ab->hw_params.fw.dir,
+ fw_entry = ath11k_core_firmware_request(ab,
ATH11K_QMI_DEFAULT_CAL_FILE_NAME);
if (ret) {
ath11k_warn(ab, "failed to load %s: %d\n",
--
2.7.4
next prev parent reply other threads:[~2020-06-16 14:01 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-16 14:00 [PATCH 00/12] preparation for IPQ6018 support Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 01/12] ath11k: ahb: call ath11k_core_init() before irq configuration Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-23 7:53 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 02/12] ath11k: convert ath11k_hw_params to an array Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 03/12] ath11k: define max_radios in hw_params Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 04/12] ath11k: add hw_ops for pdev id to hw_mac mapping Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 05/12] ath11k: Add bdf-addr in hw_params Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 06/12] ath11k: create a common function to request all firmware files Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` Kalle Valo [this message]
2020-06-16 14:00 ` [PATCH 07/12] ath11k: don't use defines for hw specific firmware directories Kalle Valo
2020-06-16 14:00 ` [PATCH 08/12] ath11k: change ath11k_core_fetch_board_data_api_n() to use ath11k_core_create_firmware_path() Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 09/12] ath11k: remove useless info messages Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 10/12] ath11k: qmi: cleanup " Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 11/12] ath11k: don't use defines in hw_params Kalle Valo
2020-06-16 14:00 ` Kalle Valo
2020-06-16 14:00 ` [PATCH 12/12] ath11k: remove define ATH11K_QMI_DEFAULT_CAL_FILE_NAME Kalle Valo
2020-06-16 14:00 ` Kalle Valo
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=1592316055-24958-8-git-send-email-kvalo@codeaurora.org \
--to=kvalo@codeaurora.org \
--cc=ath11k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
/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.