mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
wcn36xx: Allow firmware name to be overridden by DT
The WLAN NV firmware blob differs between platforms, and possibly devices, so add support in the wcn36xx driver for reading the path of this file from DT in order to allow these files to live in a generic file system (or linux-firmware). For some reason the parent (wcnss_ctrl) also needs to upload this blob, so rather than specifying the same information in both nodes wcn36xx reads the string from the parent's of_node. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org> Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Tested-by: Aníbal Limón <anibal.limon@linaro.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/20210824171225.686683-1-bjorn.andersson@linaro.org
This commit is contained in:
parent
d195d7aac0
commit
b7f96d5c79
@ -1503,6 +1503,13 @@ static int wcn36xx_probe(struct platform_device *pdev)
|
||||
goto out_wq;
|
||||
}
|
||||
|
||||
wcn->nv_file = WLAN_NV_FILE;
|
||||
ret = of_property_read_string(wcn->dev->parent->of_node, "firmware-name", &wcn->nv_file);
|
||||
if (ret < 0 && ret != -EINVAL) {
|
||||
wcn36xx_err("failed to read \"firmware-name\" property: %d\n", ret);
|
||||
goto out_wq;
|
||||
}
|
||||
|
||||
wcn->smd_channel = qcom_wcnss_open_channel(wcnss, "WLAN_CTRL", wcn36xx_smd_rsp_process, hw);
|
||||
if (IS_ERR(wcn->smd_channel)) {
|
||||
wcn36xx_err("failed to open WLAN_CTRL channel\n");
|
||||
|
@ -504,10 +504,10 @@ int wcn36xx_smd_load_nv(struct wcn36xx *wcn)
|
||||
u16 fm_offset = 0;
|
||||
|
||||
if (!wcn->nv) {
|
||||
ret = request_firmware(&wcn->nv, WLAN_NV_FILE, wcn->dev);
|
||||
ret = request_firmware(&wcn->nv, wcn->nv_file, wcn->dev);
|
||||
if (ret) {
|
||||
wcn36xx_err("Failed to load nv file %s: %d\n",
|
||||
WLAN_NV_FILE, ret);
|
||||
wcn->nv_file, ret);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
@ -199,6 +199,7 @@ struct wcn36xx {
|
||||
struct device *dev;
|
||||
struct list_head vif_list;
|
||||
|
||||
const char *nv_file;
|
||||
const struct firmware *nv;
|
||||
|
||||
u8 fw_revision;
|
||||
|
Loading…
Reference in New Issue
Block a user