소스 검색

msm: camera: icp: Fetch the firmware name from soc info

Use the a5 firmware name from soc info instead of hard coding.

CRs-Fixed: 2825675
Change-Id: Ifb089857777ae4d48c1c7ab6f12259a711c46152
Signed-off-by: Vikram Sharma <[email protected]>
Vikram Sharma 4 년 전
부모
커밋
da8fdb3095
3개의 변경된 파일19개의 추가작업 그리고 6개의 파일을 삭제
  1. 16 4
      drivers/cam_icp/icp_hw/a5_hw/a5_core.c
  2. 2 1
      drivers/cam_icp/icp_hw/a5_hw/a5_soc.c
  3. 1 1
      drivers/cam_icp/icp_hw/a5_hw/a5_soc.h

+ 16 - 4
drivers/cam_icp/icp_hw/a5_hw/a5_core.c

@@ -199,10 +199,22 @@ static int32_t cam_a5_download_fw(void *device_priv)
 	pdev = soc_info->pdev;
 	cam_a5_soc_info = soc_info->soc_private;
 
-	rc = request_firmware(&core_info->fw_elf, "CAMERA_ICP.elf", &pdev->dev);
-	if (rc) {
-		CAM_ERR(CAM_ICP, "Failed to locate fw: %d", rc);
-		return rc;
+	if (cam_a5_soc_info->fw_name) {
+		CAM_INFO(CAM_ICP, "Downloading firmware %s",
+			cam_a5_soc_info->fw_name);
+		rc = request_firmware(&core_info->fw_elf,
+				cam_a5_soc_info->fw_name, &pdev->dev);
+		if (rc) {
+			CAM_ERR(CAM_ICP, "Failed to locate fw: %d", rc);
+			return rc;
+		}
+	} else {
+		rc = request_firmware(&core_info->fw_elf,
+				"CAMERA_ICP.elf", &pdev->dev);
+		if (rc) {
+			CAM_ERR(CAM_ICP, "Failed to locate fw: %d", rc);
+			return rc;
+		}
 	}
 
 	if (!core_info->fw_elf) {

+ 2 - 1
drivers/cam_icp/icp_hw/a5_hw/a5_soc.c

@@ -32,7 +32,6 @@ static int cam_a5_get_dt_properties(struct cam_hw_soc_info *soc_info)
 	}
 
 	a5_soc_info = soc_info->soc_private;
-	fw_name = a5_soc_info->fw_name;
 
 	rc = of_property_read_string(of_node, "fw_name", &fw_name);
 	if (rc < 0) {
@@ -40,6 +39,8 @@ static int cam_a5_get_dt_properties(struct cam_hw_soc_info *soc_info)
 		goto end;
 	}
 
+	a5_soc_info->fw_name = fw_name;
+
 	rc = of_property_read_u32(of_node, "qos-val",
 		&a5_soc_info->a5_qos_val);
 	if (rc < 0) {

+ 1 - 1
drivers/cam_icp/icp_hw/a5_hw/a5_soc.h

@@ -18,7 +18,7 @@ struct a5_ubwc_cfg_ext {
 };
 
 struct a5_soc_info {
-	char *fw_name;
+	const char *fw_name;
 	bool ubwc_config_ext;
 	uint32_t a5_qos_val;
 	union {