Loading Documentation/devicetree/bindings/arm/msm/bcl.txt +4 −6 Original line number Diff line number Diff line Loading @@ -42,11 +42,9 @@ Optional parameters: 'vph-high-threshold-uv', 'vph-low-threshold-uv' and 'thermal-handle' properties should be defined in the 'qcom,ibat-monitor' node. - qcom,bcl-hotplug-mask = <hotplug-mask>: Mask indicating the cores to hotplug, when battery current limit condition is reached. Here the bits 0-7 corresponds to cores 0-7 respectively. If the value of the bit is set to 1, then the corresponding core will be hotplugged on battery current limit condition. - qcom,bcl-hotplug-list = <hotplug-phandle-list>: List of phandles to the cores that are to be hotplugged, when battery current limit condition is reached. Optional nodes: - qcom,ibat-monitor: This optional node defines all the parameters for the Loading Loading @@ -112,7 +110,7 @@ For Using BCL peripheral interface: qcom,bcl { compatible = "qcom,bcl"; qcom,bcl-framework-interface; qcom,bcl-hotplug-mask = <0xFO>; qcom,bcl-hotplug-list = <&CPU5 &CPU6 &CPU7>; qcom,ibat-monitor { high-threshold-uamp = <1500>; low-threshold-uamp = <500>; Loading drivers/power/battery_current_limit.c +16 −8 Original line number Diff line number Diff line Loading @@ -1138,6 +1138,9 @@ static ssize_t hotplug_mask_store(struct device *dev, { int ret = 0, val = 0; if (!bcl_hotplug_enabled) return -ENODEV; ret = convert_to_int(buf, &val); if (ret) return ret; Loading Loading @@ -1549,8 +1552,9 @@ btm_probe_exit: static int bcl_probe(struct platform_device *pdev) { struct bcl_context *bcl = NULL; int ret = 0; int ret = 0, i = 0, cpu = 0; enum bcl_device_mode bcl_mode = BCL_DEVICE_DISABLED; struct device_node *core_phandle = NULL; bcl = devm_kzalloc(&pdev->dev, sizeof(struct bcl_context), GFP_KERNEL); if (!bcl) { Loading Loading @@ -1578,15 +1582,19 @@ static int bcl_probe(struct platform_device *pdev) bcl_type[BCL_IAVAIL_MONITOR_TYPE]); bcl->bcl_poll_interval_msec = BCL_POLL_INTERVAL; ret = of_property_read_u32(pdev->dev.of_node, "qcom,bcl-hotplug-mask", &bcl_hotplug_mask); if (ret) { bcl_hotplug_enabled = false; ret = 0; } else { core_phandle = of_parse_phandle(pdev->dev.of_node, "qcom,bcl-hotplug-list", i++); while (core_phandle) { bcl_hotplug_enabled = true; for_each_possible_cpu(cpu) { if (of_get_cpu_node(cpu, NULL) == core_phandle) bcl_hotplug_mask |= BIT(cpu); } core_phandle = of_parse_phandle(pdev->dev.of_node, "qcom,bcl-hotplug-list", i++); } if (!bcl_hotplug_mask) bcl_hotplug_enabled = false; if (of_property_read_bool(pdev->dev.of_node, "qcom,bcl-framework-interface")) Loading Loading
Documentation/devicetree/bindings/arm/msm/bcl.txt +4 −6 Original line number Diff line number Diff line Loading @@ -42,11 +42,9 @@ Optional parameters: 'vph-high-threshold-uv', 'vph-low-threshold-uv' and 'thermal-handle' properties should be defined in the 'qcom,ibat-monitor' node. - qcom,bcl-hotplug-mask = <hotplug-mask>: Mask indicating the cores to hotplug, when battery current limit condition is reached. Here the bits 0-7 corresponds to cores 0-7 respectively. If the value of the bit is set to 1, then the corresponding core will be hotplugged on battery current limit condition. - qcom,bcl-hotplug-list = <hotplug-phandle-list>: List of phandles to the cores that are to be hotplugged, when battery current limit condition is reached. Optional nodes: - qcom,ibat-monitor: This optional node defines all the parameters for the Loading Loading @@ -112,7 +110,7 @@ For Using BCL peripheral interface: qcom,bcl { compatible = "qcom,bcl"; qcom,bcl-framework-interface; qcom,bcl-hotplug-mask = <0xFO>; qcom,bcl-hotplug-list = <&CPU5 &CPU6 &CPU7>; qcom,ibat-monitor { high-threshold-uamp = <1500>; low-threshold-uamp = <500>; Loading
drivers/power/battery_current_limit.c +16 −8 Original line number Diff line number Diff line Loading @@ -1138,6 +1138,9 @@ static ssize_t hotplug_mask_store(struct device *dev, { int ret = 0, val = 0; if (!bcl_hotplug_enabled) return -ENODEV; ret = convert_to_int(buf, &val); if (ret) return ret; Loading Loading @@ -1549,8 +1552,9 @@ btm_probe_exit: static int bcl_probe(struct platform_device *pdev) { struct bcl_context *bcl = NULL; int ret = 0; int ret = 0, i = 0, cpu = 0; enum bcl_device_mode bcl_mode = BCL_DEVICE_DISABLED; struct device_node *core_phandle = NULL; bcl = devm_kzalloc(&pdev->dev, sizeof(struct bcl_context), GFP_KERNEL); if (!bcl) { Loading Loading @@ -1578,15 +1582,19 @@ static int bcl_probe(struct platform_device *pdev) bcl_type[BCL_IAVAIL_MONITOR_TYPE]); bcl->bcl_poll_interval_msec = BCL_POLL_INTERVAL; ret = of_property_read_u32(pdev->dev.of_node, "qcom,bcl-hotplug-mask", &bcl_hotplug_mask); if (ret) { bcl_hotplug_enabled = false; ret = 0; } else { core_phandle = of_parse_phandle(pdev->dev.of_node, "qcom,bcl-hotplug-list", i++); while (core_phandle) { bcl_hotplug_enabled = true; for_each_possible_cpu(cpu) { if (of_get_cpu_node(cpu, NULL) == core_phandle) bcl_hotplug_mask |= BIT(cpu); } core_phandle = of_parse_phandle(pdev->dev.of_node, "qcom,bcl-hotplug-list", i++); } if (!bcl_hotplug_mask) bcl_hotplug_enabled = false; if (of_property_read_bool(pdev->dev.of_node, "qcom,bcl-framework-interface")) Loading