Loading arch/arm64/boot/dts/qcom/sdmmagpie-camera-sensor-idp.dtsi +87 −3 Original line number Diff line number Diff line /* * Copyright (c) 2018, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -267,7 +267,7 @@ qcom,cam-sensor@2 { cell-index = <2>; compatible = "qcom,cam-sensor"; reg = <0x02>; reg = <0x2>; csiphy-sd-index = <2>; sensor-position-roll = <270>; sensor-position-pitch = <0>; Loading Loading @@ -351,7 +351,7 @@ qcom,cam-sensor@4 { cell-index = <4>; compatible = "qcom,cam-sensor"; reg = <0x04>; reg = <0x4>; csiphy-sd-index = <0>; sensor-position-roll = <90>; sensor-position-pitch = <0>; Loading Loading @@ -390,6 +390,90 @@ clock-cntl-level = "turbo"; clock-rates = <24000000>; }; qcom,cam-sensor@5 { cell-index = <5>; compatible = "qcom,cam-sensor"; reg = <0x5>; csiphy-sd-index = <1>; sensor-position-roll = <90>; sensor-position-pitch = <0>; sensor-position-yaw = <180>; led-flash-src = <&led_flash_rear_aux>; eeprom-src = <&eeprom_rear>; actuator-src = <&actuator_rear>; cam_vio-supply = <&pm8009_l7>; cam_vana-supply = <&pm8009_l6>; cam_vdig-supply = <&pm8009_l4>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 2800000 1200000 0>; rgltr-max-voltage = <1800000 2800000 1200000 0>; rgltr-load-current = <0 80000 105000 0>; gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk1_active &cam_sensor_rear2_active>; pinctrl-1 = <&cam_sensor_mclk1_suspend &cam_sensor_rear2_suspend>; gpios = <&tlmm 14 0>, <&pm8009_gpios 2 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK1", "CAM_RESET1"; sensor-mode = <0>; cci-master = <0>; status = "ok"; clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; clock-names = "cam_clk"; clock-cntl-level = "turbo"; clock-rates = <24000000>; }; qcom,cam-sensor@6 { cell-index = <6>; compatible = "qcom,cam-sensor"; reg = <0x6>; csiphy-sd-index = <2>; sensor-position-roll = <270>; sensor-position-pitch = <0>; sensor-position-yaw = <0>; actuator-src = <&actuator_rear_aux>; cam_vio-supply = <&pm8009_l7>; cam_vana-supply = <&pm8009_l6>; cam_vdig-supply = <&pm8009_l2>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 2800000 1050000 0>; rgltr-max-voltage = <1800000 2800000 1050000 0>; rgltr-load-current = <0 80000 105000 0>; gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>; pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>; gpios = <&tlmm 15 0>, <&pm8009_gpios 4 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK2", "CAM_RESET2"; sensor-mode = <0>; cci-master = <1>; status = "ok"; clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; clock-names = "cam_clk"; clock-cntl-level = "turbo"; clock-rates = <24000000>; }; }; Loading arch/arm64/boot/dts/qcom/sm6150-pinctrl.dtsi +28 −0 Original line number Diff line number Diff line Loading @@ -1607,6 +1607,34 @@ }; }; cam_sensor_mclk3_active: cam_sensor_mclk3_active { /* MCLK3 */ mux { pins = "gpio31"; function = "cam_mclk"; }; config { pins = "gpio31"; bias-disable; /* No PULL */ drive-strength = <2>; /* 2 MA */ }; }; cam_sensor_mclk3_suspend: cam_sensor_mclk3_suspend { /* MCLK3 */ mux { pins = "gpio31"; function = "cam_mclk"; }; config { pins = "gpio31"; bias-pull-down; /* PULL DOWN */ drive-strength = <2>; /* 2 MA */ }; }; flash_led3_front { flash_led3_front_en: flash_led3_front_en { mux { Loading drivers/media/platform/msm/camera/cam_cdm/cam_cdm_core_common.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -280,6 +280,7 @@ int cam_cdm_stream_ops_internal(void *hw_priv, ahb_vote.type = CAM_VOTE_ABSOLUTE; ahb_vote.vote.level = CAM_SVS_VOTE; axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; rc = cam_cpas_start(core->cpas_handle, Loading drivers/media/platform/msm/camera/cam_cdm/cam_cdm_hw_core.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -947,6 +947,7 @@ int cam_hw_cdm_probe(struct platform_device *pdev) ahb_vote.type = CAM_VOTE_ABSOLUTE; ahb_vote.vote.level = CAM_SVS_VOTE; axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; rc = cam_cpas_start(cdm_core->cpas_handle, &ahb_vote, &axi_vote); if (rc) { Loading drivers/media/platform/msm/camera/cam_cpas/cam_cpas_hw.c +27 −15 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -620,7 +620,7 @@ static int cam_cpas_util_apply_client_axi_vote( struct cam_cpas_client *temp_client; struct cam_axi_vote req_axi_vote = *axi_vote; struct cam_cpas_axi_port *axi_port = cpas_client->axi_port; uint64_t camnoc_bw = 0, mnoc_bw = 0; uint64_t camnoc_bw = 0, mnoc_bw = 0, mnoc_bw_ab = 0; int rc = 0; if (!axi_port) { Loading @@ -632,14 +632,21 @@ static int cam_cpas_util_apply_client_axi_vote( * Make sure we use same bw for both compressed, uncompressed * in case client has requested either of one only */ if (req_axi_vote.compressed_bw == 0) if (req_axi_vote.compressed_bw == 0) { req_axi_vote.compressed_bw = req_axi_vote.uncompressed_bw; req_axi_vote.compressed_bw_ab = req_axi_vote.uncompressed_bw; } if (req_axi_vote.compressed_bw_ab == 0) req_axi_vote.compressed_bw_ab = req_axi_vote.compressed_bw; if (req_axi_vote.uncompressed_bw == 0) req_axi_vote.uncompressed_bw = req_axi_vote.compressed_bw; if ((cpas_client->axi_vote.compressed_bw == req_axi_vote.compressed_bw) && (cpas_client->axi_vote.compressed_bw_ab == req_axi_vote.compressed_bw_ab) && (cpas_client->axi_vote.uncompressed_bw == req_axi_vote.uncompressed_bw)) return 0; Loading @@ -651,23 +658,27 @@ static int cam_cpas_util_apply_client_axi_vote( &axi_port->clients_list_head, axi_sibling_client) { camnoc_bw += curr_client->axi_vote.uncompressed_bw; mnoc_bw += curr_client->axi_vote.compressed_bw; mnoc_bw_ab += curr_client->axi_vote.compressed_bw_ab; } if ((!soc_private->axi_camnoc_based) && (mnoc_bw < camnoc_bw)) mnoc_bw = camnoc_bw; if ((!soc_private->axi_camnoc_based) && (mnoc_bw_ab < camnoc_bw)) mnoc_bw_ab = mnoc_bw; axi_port->consolidated_axi_vote.compressed_bw = mnoc_bw; axi_port->consolidated_axi_vote.uncompressed_bw = camnoc_bw; CAM_DBG(CAM_CPAS, "axi[(%d, %d),(%d, %d)] : camnoc_bw[%llu], mnoc_bw[%llu]", "axi[(%d, %d),(%d, %d)] : camnoc_bw[%llu], mnoc_bw[ab: %llu, ib: %llu]", axi_port->mnoc_bus.src, axi_port->mnoc_bus.dst, axi_port->camnoc_bus.src, axi_port->camnoc_bus.dst, camnoc_bw, mnoc_bw); camnoc_bw, mnoc_bw_ab, mnoc_bw); if (axi_port->ib_bw_voting_needed) rc = cam_cpas_util_vote_bus_client_bw(&axi_port->mnoc_bus, mnoc_bw, mnoc_bw, false); mnoc_bw_ab, mnoc_bw, false); else rc = cam_cpas_util_vote_bus_client_bw(&axi_port->mnoc_bus, mnoc_bw, 0, false); Loading @@ -675,9 +686,7 @@ static int cam_cpas_util_apply_client_axi_vote( if (rc) { CAM_ERR(CAM_CPAS, "Failed in mnoc vote ab[%llu] ib[%llu] rc=%d", mnoc_bw, (axi_port->ib_bw_voting_needed ? mnoc_bw : 0), rc); mnoc_bw_ab, mnoc_bw, rc); goto unlock_axi_port; } Loading Loading @@ -723,11 +732,13 @@ static int cam_cpas_hw_update_axi_vote(struct cam_hw_info *cpas_hw, axi_vote = *client_axi_vote; if ((axi_vote.compressed_bw == 0) && (axi_vote.uncompressed_bw == 0)) { (axi_vote.uncompressed_bw == 0) && (axi_vote.compressed_bw_ab == 0)) { CAM_DBG(CAM_CPAS, "0 vote from client_handle=%d", client_handle); axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; } if (!CAM_CPAS_CLIENT_VALID(client_indx)) Loading @@ -746,10 +757,10 @@ static int cam_cpas_hw_update_axi_vote(struct cam_hw_info *cpas_hw, } CAM_DBG(CAM_PERF, "Client=[%d][%s][%d] Requested compressed[%llu], uncompressed[%llu]", "Client=[%d][%s][%d] Req comp[%llu], comp_ab[%llu], uncomp[%llu]", client_indx, cpas_client->data.identifier, cpas_client->data.cell_index, axi_vote.compressed_bw, axi_vote.uncompressed_bw); axi_vote.compressed_bw_ab, axi_vote.uncompressed_bw); rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_core->cpas_client[client_indx], &axi_vote); Loading Loading @@ -1001,11 +1012,11 @@ static int cam_cpas_hw_start(void *hw_priv, void *start_args, if (rc) goto done; CAM_DBG(CAM_CPAS, "AXI client=[%d][%s][%d] compressed_bw[%llu], uncompressed_bw[%llu]", CAM_INFO(CAM_CPAS, "AXI client=[%d][%s][%d] comp[%llu], comp_ab[%llu], uncomp[%llu]", client_indx, cpas_client->data.identifier, cpas_client->data.cell_index, axi_vote->compressed_bw, axi_vote->uncompressed_bw); axi_vote->compressed_bw_ab, axi_vote->uncompressed_bw); rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_client, axi_vote); if (rc) Loading Loading @@ -1156,6 +1167,7 @@ static int cam_cpas_hw_stop(void *hw_priv, void *stop_args, axi_vote.uncompressed_bw = 0; axi_vote.compressed_bw = 0; axi_vote.compressed_bw_ab = 0; rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_client, &axi_vote); Loading Loading
arch/arm64/boot/dts/qcom/sdmmagpie-camera-sensor-idp.dtsi +87 −3 Original line number Diff line number Diff line /* * Copyright (c) 2018, The Linux Foundation. All rights reserved. * Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -267,7 +267,7 @@ qcom,cam-sensor@2 { cell-index = <2>; compatible = "qcom,cam-sensor"; reg = <0x02>; reg = <0x2>; csiphy-sd-index = <2>; sensor-position-roll = <270>; sensor-position-pitch = <0>; Loading Loading @@ -351,7 +351,7 @@ qcom,cam-sensor@4 { cell-index = <4>; compatible = "qcom,cam-sensor"; reg = <0x04>; reg = <0x4>; csiphy-sd-index = <0>; sensor-position-roll = <90>; sensor-position-pitch = <0>; Loading Loading @@ -390,6 +390,90 @@ clock-cntl-level = "turbo"; clock-rates = <24000000>; }; qcom,cam-sensor@5 { cell-index = <5>; compatible = "qcom,cam-sensor"; reg = <0x5>; csiphy-sd-index = <1>; sensor-position-roll = <90>; sensor-position-pitch = <0>; sensor-position-yaw = <180>; led-flash-src = <&led_flash_rear_aux>; eeprom-src = <&eeprom_rear>; actuator-src = <&actuator_rear>; cam_vio-supply = <&pm8009_l7>; cam_vana-supply = <&pm8009_l6>; cam_vdig-supply = <&pm8009_l4>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 2800000 1200000 0>; rgltr-max-voltage = <1800000 2800000 1200000 0>; rgltr-load-current = <0 80000 105000 0>; gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk1_active &cam_sensor_rear2_active>; pinctrl-1 = <&cam_sensor_mclk1_suspend &cam_sensor_rear2_suspend>; gpios = <&tlmm 14 0>, <&pm8009_gpios 2 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK1", "CAM_RESET1"; sensor-mode = <0>; cci-master = <0>; status = "ok"; clocks = <&clock_camcc CAM_CC_MCLK1_CLK>; clock-names = "cam_clk"; clock-cntl-level = "turbo"; clock-rates = <24000000>; }; qcom,cam-sensor@6 { cell-index = <6>; compatible = "qcom,cam-sensor"; reg = <0x6>; csiphy-sd-index = <2>; sensor-position-roll = <270>; sensor-position-pitch = <0>; sensor-position-yaw = <0>; actuator-src = <&actuator_rear_aux>; cam_vio-supply = <&pm8009_l7>; cam_vana-supply = <&pm8009_l6>; cam_vdig-supply = <&pm8009_l2>; cam_clk-supply = <&titan_top_gdsc>; regulator-names = "cam_vio", "cam_vana", "cam_vdig", "cam_clk"; rgltr-cntrl-support; rgltr-min-voltage = <1800000 2800000 1050000 0>; rgltr-max-voltage = <1800000 2800000 1050000 0>; rgltr-load-current = <0 80000 105000 0>; gpio-no-mux = <0>; pinctrl-names = "cam_default", "cam_suspend"; pinctrl-0 = <&cam_sensor_mclk2_active &cam_sensor_front_active>; pinctrl-1 = <&cam_sensor_mclk2_suspend &cam_sensor_front_suspend>; gpios = <&tlmm 15 0>, <&pm8009_gpios 4 0>; gpio-reset = <1>; gpio-req-tbl-num = <0 1>; gpio-req-tbl-flags = <1 0>; gpio-req-tbl-label = "CAMIF_MCLK2", "CAM_RESET2"; sensor-mode = <0>; cci-master = <1>; status = "ok"; clocks = <&clock_camcc CAM_CC_MCLK2_CLK>; clock-names = "cam_clk"; clock-cntl-level = "turbo"; clock-rates = <24000000>; }; }; Loading
arch/arm64/boot/dts/qcom/sm6150-pinctrl.dtsi +28 −0 Original line number Diff line number Diff line Loading @@ -1607,6 +1607,34 @@ }; }; cam_sensor_mclk3_active: cam_sensor_mclk3_active { /* MCLK3 */ mux { pins = "gpio31"; function = "cam_mclk"; }; config { pins = "gpio31"; bias-disable; /* No PULL */ drive-strength = <2>; /* 2 MA */ }; }; cam_sensor_mclk3_suspend: cam_sensor_mclk3_suspend { /* MCLK3 */ mux { pins = "gpio31"; function = "cam_mclk"; }; config { pins = "gpio31"; bias-pull-down; /* PULL DOWN */ drive-strength = <2>; /* 2 MA */ }; }; flash_led3_front { flash_led3_front_en: flash_led3_front_en { mux { Loading
drivers/media/platform/msm/camera/cam_cdm/cam_cdm_core_common.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -280,6 +280,7 @@ int cam_cdm_stream_ops_internal(void *hw_priv, ahb_vote.type = CAM_VOTE_ABSOLUTE; ahb_vote.vote.level = CAM_SVS_VOTE; axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; rc = cam_cpas_start(core->cpas_handle, Loading
drivers/media/platform/msm/camera/cam_cdm/cam_cdm_hw_core.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -947,6 +947,7 @@ int cam_hw_cdm_probe(struct platform_device *pdev) ahb_vote.type = CAM_VOTE_ABSOLUTE; ahb_vote.vote.level = CAM_SVS_VOTE; axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; rc = cam_cpas_start(cdm_core->cpas_handle, &ahb_vote, &axi_vote); if (rc) { Loading
drivers/media/platform/msm/camera/cam_cpas/cam_cpas_hw.c +27 −15 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -620,7 +620,7 @@ static int cam_cpas_util_apply_client_axi_vote( struct cam_cpas_client *temp_client; struct cam_axi_vote req_axi_vote = *axi_vote; struct cam_cpas_axi_port *axi_port = cpas_client->axi_port; uint64_t camnoc_bw = 0, mnoc_bw = 0; uint64_t camnoc_bw = 0, mnoc_bw = 0, mnoc_bw_ab = 0; int rc = 0; if (!axi_port) { Loading @@ -632,14 +632,21 @@ static int cam_cpas_util_apply_client_axi_vote( * Make sure we use same bw for both compressed, uncompressed * in case client has requested either of one only */ if (req_axi_vote.compressed_bw == 0) if (req_axi_vote.compressed_bw == 0) { req_axi_vote.compressed_bw = req_axi_vote.uncompressed_bw; req_axi_vote.compressed_bw_ab = req_axi_vote.uncompressed_bw; } if (req_axi_vote.compressed_bw_ab == 0) req_axi_vote.compressed_bw_ab = req_axi_vote.compressed_bw; if (req_axi_vote.uncompressed_bw == 0) req_axi_vote.uncompressed_bw = req_axi_vote.compressed_bw; if ((cpas_client->axi_vote.compressed_bw == req_axi_vote.compressed_bw) && (cpas_client->axi_vote.compressed_bw_ab == req_axi_vote.compressed_bw_ab) && (cpas_client->axi_vote.uncompressed_bw == req_axi_vote.uncompressed_bw)) return 0; Loading @@ -651,23 +658,27 @@ static int cam_cpas_util_apply_client_axi_vote( &axi_port->clients_list_head, axi_sibling_client) { camnoc_bw += curr_client->axi_vote.uncompressed_bw; mnoc_bw += curr_client->axi_vote.compressed_bw; mnoc_bw_ab += curr_client->axi_vote.compressed_bw_ab; } if ((!soc_private->axi_camnoc_based) && (mnoc_bw < camnoc_bw)) mnoc_bw = camnoc_bw; if ((!soc_private->axi_camnoc_based) && (mnoc_bw_ab < camnoc_bw)) mnoc_bw_ab = mnoc_bw; axi_port->consolidated_axi_vote.compressed_bw = mnoc_bw; axi_port->consolidated_axi_vote.uncompressed_bw = camnoc_bw; CAM_DBG(CAM_CPAS, "axi[(%d, %d),(%d, %d)] : camnoc_bw[%llu], mnoc_bw[%llu]", "axi[(%d, %d),(%d, %d)] : camnoc_bw[%llu], mnoc_bw[ab: %llu, ib: %llu]", axi_port->mnoc_bus.src, axi_port->mnoc_bus.dst, axi_port->camnoc_bus.src, axi_port->camnoc_bus.dst, camnoc_bw, mnoc_bw); camnoc_bw, mnoc_bw_ab, mnoc_bw); if (axi_port->ib_bw_voting_needed) rc = cam_cpas_util_vote_bus_client_bw(&axi_port->mnoc_bus, mnoc_bw, mnoc_bw, false); mnoc_bw_ab, mnoc_bw, false); else rc = cam_cpas_util_vote_bus_client_bw(&axi_port->mnoc_bus, mnoc_bw, 0, false); Loading @@ -675,9 +686,7 @@ static int cam_cpas_util_apply_client_axi_vote( if (rc) { CAM_ERR(CAM_CPAS, "Failed in mnoc vote ab[%llu] ib[%llu] rc=%d", mnoc_bw, (axi_port->ib_bw_voting_needed ? mnoc_bw : 0), rc); mnoc_bw_ab, mnoc_bw, rc); goto unlock_axi_port; } Loading Loading @@ -723,11 +732,13 @@ static int cam_cpas_hw_update_axi_vote(struct cam_hw_info *cpas_hw, axi_vote = *client_axi_vote; if ((axi_vote.compressed_bw == 0) && (axi_vote.uncompressed_bw == 0)) { (axi_vote.uncompressed_bw == 0) && (axi_vote.compressed_bw_ab == 0)) { CAM_DBG(CAM_CPAS, "0 vote from client_handle=%d", client_handle); axi_vote.compressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.uncompressed_bw = CAM_CPAS_DEFAULT_AXI_BW; axi_vote.compressed_bw_ab = CAM_CPAS_DEFAULT_AXI_BW; } if (!CAM_CPAS_CLIENT_VALID(client_indx)) Loading @@ -746,10 +757,10 @@ static int cam_cpas_hw_update_axi_vote(struct cam_hw_info *cpas_hw, } CAM_DBG(CAM_PERF, "Client=[%d][%s][%d] Requested compressed[%llu], uncompressed[%llu]", "Client=[%d][%s][%d] Req comp[%llu], comp_ab[%llu], uncomp[%llu]", client_indx, cpas_client->data.identifier, cpas_client->data.cell_index, axi_vote.compressed_bw, axi_vote.uncompressed_bw); axi_vote.compressed_bw_ab, axi_vote.uncompressed_bw); rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_core->cpas_client[client_indx], &axi_vote); Loading Loading @@ -1001,11 +1012,11 @@ static int cam_cpas_hw_start(void *hw_priv, void *start_args, if (rc) goto done; CAM_DBG(CAM_CPAS, "AXI client=[%d][%s][%d] compressed_bw[%llu], uncompressed_bw[%llu]", CAM_INFO(CAM_CPAS, "AXI client=[%d][%s][%d] comp[%llu], comp_ab[%llu], uncomp[%llu]", client_indx, cpas_client->data.identifier, cpas_client->data.cell_index, axi_vote->compressed_bw, axi_vote->uncompressed_bw); axi_vote->compressed_bw_ab, axi_vote->uncompressed_bw); rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_client, axi_vote); if (rc) Loading Loading @@ -1156,6 +1167,7 @@ static int cam_cpas_hw_stop(void *hw_priv, void *stop_args, axi_vote.uncompressed_bw = 0; axi_vote.compressed_bw = 0; axi_vote.compressed_bw_ab = 0; rc = cam_cpas_util_apply_client_axi_vote(cpas_hw, cpas_client, &axi_vote); Loading