diff options
| author | Arnd Bergmann <arnd@arndb.de> | 2021-04-09 21:46:14 +0200 | 
|---|---|---|
| committer | Arnd Bergmann <arnd@arndb.de> | 2021-04-09 21:46:15 +0200 | 
| commit | 30be8446db39be8dc52fc8cd2cb601d3d6319e9d (patch) | |
| tree | cc0f49a9a9ec6c3976383cd56baffffa133962bf /drivers/soc/qcom/wcnss_ctrl.c | |
| parent | 36841008059caec9667459a7e126efac6379676b (diff) | |
| parent | 0648c55e3a21ccd816e99b6600d6199fbf39d23a (diff) | |
Merge tag 'qcom-drivers-for-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into arm/drivers
More Qualcomm driver updates for 5.13
This improves the Qualcomm SCM driver logic related to detecting the
calling convention, in particular on SC7180, and fixes a few small
issues in the same.
It introduces additonal sanity checks of the size of loaded segments in
the MDT loader and adds a missing error in the return path of
pdr_register_listener().
It makes it possible to specify the OEM specific firmware path in the
wcn36xx control (and WiFi) driver.
Lastly it adds a missing path specifier in the MAINTAINERS' entry and
fixes a bunch of kerneldoc issues in various drivers.
* tag 'qcom-drivers-for-5.13-2' of git://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
  soc: qcom: mdt_loader: Detect truncated read of segments
  soc: qcom: mdt_loader: Validate that p_filesz < p_memsz
  soc: qcom: pdr: Fix error return code in pdr_register_listener
  firmware: qcom_scm: Fix kernel-doc function names to match
  firmware: qcom_scm: Suppress sysfs bind attributes
  firmware: qcom_scm: Workaround lack of "is available" call on SC7180
  firmware: qcom_scm: Reduce locking section for __get_convention()
  firmware: qcom_scm: Make __qcom_scm_is_call_available() return bool
  soc: qcom: wcnss_ctrl: Allow reading firmware-name from DT
  soc: qcom: wcnss_ctrl: Introduce local variable "dev"
  dt-bindings: soc: qcom: wcnss: Add firmware-name property
  soc: qcom: address kernel-doc warnings
  MAINTAINERS: add another entry for ARM/QUALCOMM SUPPORT
Link: https://lore.kernel.org/r/20210409162001.775851-1-bjorn.andersson@linaro.org
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/soc/qcom/wcnss_ctrl.c')
| -rw-r--r-- | drivers/soc/qcom/wcnss_ctrl.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/soc/qcom/wcnss_ctrl.c b/drivers/soc/qcom/wcnss_ctrl.c index 32bed249f90e..2a06d631e415 100644 --- a/drivers/soc/qcom/wcnss_ctrl.c +++ b/drivers/soc/qcom/wcnss_ctrl.c @@ -199,6 +199,8 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)  {  	struct wcnss_download_nv_req *req;  	const struct firmware *fw; +	struct device *dev = wcnss->dev; +	const char *nvbin = NVBIN_FILE;  	const void *data;  	ssize_t left;  	int ret; @@ -207,10 +209,13 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)  	if (!req)  		return -ENOMEM; -	ret = request_firmware(&fw, NVBIN_FILE, wcnss->dev); +	ret = of_property_read_string(dev->of_node, "firmware-name", &nvbin); +	if (ret < 0 && ret != -EINVAL) +		goto free_req; + +	ret = request_firmware(&fw, nvbin, dev);  	if (ret < 0) { -		dev_err(wcnss->dev, "Failed to load nv file %s: %d\n", -			NVBIN_FILE, ret); +		dev_err(dev, "Failed to load nv file %s: %d\n", nvbin, ret);  		goto free_req;  	} @@ -235,7 +240,7 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)  		ret = rpmsg_send(wcnss->channel, req, req->hdr.len);  		if (ret < 0) { -			dev_err(wcnss->dev, "failed to send smd packet\n"); +			dev_err(dev, "failed to send smd packet\n");  			goto release_fw;  		} @@ -248,7 +253,7 @@ static int wcnss_download_nv(struct wcnss_ctrl *wcnss, bool *expect_cbc)  	ret = wait_for_completion_timeout(&wcnss->ack, WCNSS_REQUEST_TIMEOUT);  	if (!ret) { -		dev_err(wcnss->dev, "timeout waiting for nv upload ack\n"); +		dev_err(dev, "timeout waiting for nv upload ack\n");  		ret = -ETIMEDOUT;  	} else {  		*expect_cbc = wcnss->ack_status == WCNSS_ACK_COLD_BOOTING;  | 
