- Convert the DT bindings to yaml format for the Exynos platform
and fix the MAINTAINERS file regarding this driver (Krzysztof Kozlowski) - Register the thermal zones as HWmon sensors for the QCom's Tsens driver (Dmitry Baryshkov) - Add the sm8150 platform support to LMh (Thara Gopinath) - Add the msm8953 compatible documentation in the bindings (Luca Weiss) - Register the thermal zones as HWmon sensors for the TI thermal platforms (Romain Naour) - Check the command result from the IPC command to the BPMP in the Tegra driver (Mikko Perttunen) - Silent the error for normal configuration where the interrupt is optionnal on the Broadcom thermal driver (Florian Fainelli) - Remove a remaining dead code from the TI thermal driver (Yue Haibing) - Update the email in MAINTAINERS file for the Exynos thermal driver (Krzysztof Kozlowski) -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEGn3N4YVz0WNVyHskqDIjiipP6E8FAmInvJEACgkQqDIjiipP 6E988wf9GHLrBkFhn0M55ctXwVd28vXIeNOCgmqncAeD2lvooEJr4VFTD310iZnH hOVkH8QWEGYDr3wWRzC17JpPK6LFWTobo0D+eMda029gQ3CUb8X7kgBaKyPj38fP T/gcZtnZIQ3uEzYhzr6BR8Bd4Y/D6KWQjPk0Kj956q86HlSRWS+pnwW2+j0jBa9x 1ANIYdRLn+x6kLrwV0H9x2Ia5FO1q2zgwMwSSviO3qSJPjmZgqDfhsNr3qMKKB80 cPAxvmjWQ+eFKt9LiPxTzLP0gRYRGQ2Kti2QDHaZ7pLVXzRwU9syqVaQgxttaSj1 LZATY62iqV/XB+X/YHtCAeuvmQRADg== =u4II -----END PGP SIGNATURE----- Merge tag 'thermal-v5.18-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux Pull thermal control changes for 5.18-rc1 from Daniel Lezcano: "- Convert the DT bindings to yaml format for the Exynos platform and fix the MAINTAINERS file regarding this driver (Krzysztof Kozlowski) - Register the thermal zones as HWmon sensors for the QCom's Tsens driver (Dmitry Baryshkov) - Add the sm8150 platform support to LMh (Thara Gopinath) - Add the msm8953 compatible documentation in the bindings (Luca Weiss) - Register the thermal zones as HWmon sensors for the TI thermal platforms (Romain Naour) - Check the command result from the IPC command to the BPMP in the Tegra driver (Mikko Perttunen) - Silent the error for normal configuration where the interrupt is optionnal on the Broadcom thermal driver (Florian Fainelli) - Remove a remaining dead code from the TI thermal driver (Yue Haibing) - Update the email in MAINTAINERS file for the Exynos thermal driver (Krzysztof Kozlowski)" * tag 'thermal-v5.18-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux: MAINTAINERS: thermal: samsung: update Krzysztof Kozlowski's email thermal/drivers/ti-soc-thermal: Remove unused function ti_thermal_get_temp() thermal/drivers/brcmstb_thermal: Interrupt is optional thermal: tegra-bpmp: Handle errors in BPMP response drivers/thermal/ti-soc-thermal: Add hwmon support dt-bindings: thermal: tsens: Add msm8953 compatible dt-bindings: thermal: Add sm8150 compatible string for LMh thermal/drivers/qcom/lmh: Add support for sm8150 thermal/drivers/tsens: register thermal zones as hwmon sensors MAINTAINERS: thermal: samsung: Drop obsolete properties dt-bindings: thermal: samsung: Convert to dtschema
This commit is contained in:
commit
6bf0f1c235
@ -1,106 +0,0 @@
|
||||
* Exynos Thermal Management Unit (TMU)
|
||||
|
||||
** Required properties:
|
||||
|
||||
- compatible : One of the following:
|
||||
"samsung,exynos3250-tmu"
|
||||
"samsung,exynos4412-tmu"
|
||||
"samsung,exynos4210-tmu"
|
||||
"samsung,exynos5250-tmu"
|
||||
"samsung,exynos5260-tmu"
|
||||
"samsung,exynos5420-tmu" for TMU channel 0, 1 on Exynos5420
|
||||
"samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4
|
||||
Exynos5420 (Must pass triminfo base and triminfo clock)
|
||||
"samsung,exynos5433-tmu"
|
||||
"samsung,exynos7-tmu"
|
||||
- reg : Address range of the thermal registers. For soc's which has multiple
|
||||
instances of TMU and some registers are shared across all TMU's like
|
||||
interrupt related then 2 set of register has to supplied. First set
|
||||
belongs to register set of TMU instance and second set belongs to
|
||||
registers shared with the TMU instance.
|
||||
|
||||
NOTE: On Exynos5420, the TRIMINFO register is misplaced for TMU
|
||||
channels 2, 3 and 4
|
||||
Use "samsung,exynos5420-tmu-ext-triminfo" in cases, there is a misplaced
|
||||
register, also provide clock to access that base.
|
||||
|
||||
TRIMINFO at 0x1006c000 contains data for TMU channel 3
|
||||
TRIMINFO at 0x100a0000 contains data for TMU channel 4
|
||||
TRIMINFO at 0x10068000 contains data for TMU channel 2
|
||||
|
||||
- interrupts : Should contain interrupt for thermal system
|
||||
- clocks : The main clocks for TMU device
|
||||
-- 1. operational clock for TMU channel
|
||||
-- 2. optional clock to access the shared registers of TMU channel
|
||||
-- 3. optional special clock for functional operation
|
||||
- clock-names : Thermal system clock name
|
||||
-- "tmu_apbif" operational clock for current TMU channel
|
||||
-- "tmu_triminfo_apbif" clock to access the shared triminfo register
|
||||
for current TMU channel
|
||||
-- "tmu_sclk" clock for functional operation of the current TMU
|
||||
channel
|
||||
|
||||
The Exynos TMU supports generating interrupts when reaching given
|
||||
temperature thresholds. Number of supported thermal trip points depends
|
||||
on the SoC (only first trip points defined in DT will be configured):
|
||||
- most of SoC: 4
|
||||
- samsung,exynos5433-tmu: 8
|
||||
- samsung,exynos7-tmu: 8
|
||||
|
||||
** Optional properties:
|
||||
|
||||
- vtmu-supply: This entry is optional and provides the regulator node supplying
|
||||
voltage to TMU. If needed this entry can be placed inside
|
||||
board/platform specific dts file.
|
||||
|
||||
Example 1):
|
||||
|
||||
tmu@100c0000 {
|
||||
compatible = "samsung,exynos4412-tmu";
|
||||
interrupt-parent = <&combiner>;
|
||||
reg = <0x100C0000 0x100>;
|
||||
interrupts = <2 4>;
|
||||
clocks = <&clock 383>;
|
||||
clock-names = "tmu_apbif";
|
||||
vtmu-supply = <&tmu_regulator_node>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
Example 2): (In case of Exynos5420 "with misplaced TRIMINFO register")
|
||||
tmu_cpu2: tmu@10068000 {
|
||||
compatible = "samsung,exynos5420-tmu-ext-triminfo";
|
||||
reg = <0x10068000 0x100>, <0x1006c000 0x4>;
|
||||
interrupts = <0 184 0>;
|
||||
clocks = <&clock 318>, <&clock 318>;
|
||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
tmu_cpu3: tmu@1006c000 {
|
||||
compatible = "samsung,exynos5420-tmu-ext-triminfo";
|
||||
reg = <0x1006c000 0x100>, <0x100a0000 0x4>;
|
||||
interrupts = <0 185 0>;
|
||||
clocks = <&clock 318>, <&clock 319>;
|
||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
tmu_gpu: tmu@100a0000 {
|
||||
compatible = "samsung,exynos5420-tmu-ext-triminfo";
|
||||
reg = <0x100a0000 0x100>, <0x10068000 0x4>;
|
||||
interrupts = <0 215 0>;
|
||||
clocks = <&clock 319>, <&clock 318>;
|
||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||
#thermal-sensor-cells = <0>;
|
||||
};
|
||||
|
||||
Note: For multi-instance tmu each instance should have an alias correctly
|
||||
numbered in "aliases" node.
|
||||
|
||||
Example:
|
||||
|
||||
aliases {
|
||||
tmuctrl0 = &tmuctrl_0;
|
||||
tmuctrl1 = &tmuctrl_1;
|
||||
tmuctrl2 = &tmuctrl_2;
|
||||
};
|
@ -19,6 +19,7 @@ properties:
|
||||
compatible:
|
||||
enum:
|
||||
- qcom,sdm845-lmh
|
||||
- qcom,sm8150-lmh
|
||||
|
||||
reg:
|
||||
items:
|
||||
|
@ -43,6 +43,7 @@ properties:
|
||||
- description: v2 of TSENS
|
||||
items:
|
||||
- enum:
|
||||
- qcom,msm8953-tsens
|
||||
- qcom,msm8996-tsens
|
||||
- qcom,msm8998-tsens
|
||||
- qcom,sc7180-tsens
|
||||
|
@ -0,0 +1,184 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/thermal/samsung,exynos-thermal.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Samsung Exynos SoC Thermal Management Unit (TMU)
|
||||
|
||||
maintainers:
|
||||
- Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
|
||||
|
||||
description: |
|
||||
For multi-instance tmu each instance should have an alias correctly numbered
|
||||
in "aliases" node.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- samsung,exynos3250-tmu
|
||||
- samsung,exynos4412-tmu
|
||||
- samsung,exynos4210-tmu
|
||||
- samsung,exynos5250-tmu
|
||||
- samsung,exynos5260-tmu
|
||||
# For TMU channel 0, 1 on Exynos5420:
|
||||
- samsung,exynos5420-tmu
|
||||
# For TMU channels 2, 3 and 4 of Exynos5420:
|
||||
- samsung,exynos5420-tmu-ext-triminfo
|
||||
- samsung,exynos5433-tmu
|
||||
- samsung,exynos7-tmu
|
||||
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
clock-names:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
interrupts:
|
||||
description: |
|
||||
The Exynos TMU supports generating interrupts when reaching given
|
||||
temperature thresholds. Number of supported thermal trip points depends
|
||||
on the SoC (only first trip points defined in DT will be configured)::
|
||||
- most of SoC: 4
|
||||
- samsung,exynos5433-tmu: 8
|
||||
- samsung,exynos7-tmu: 8
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: TMU instance registers.
|
||||
- description: |
|
||||
Shared TMU registers.
|
||||
|
||||
Note:: On Exynos5420, the TRIMINFO register is misplaced for TMU
|
||||
channels 2, 3 and 4 Use "samsung,exynos5420-tmu-ext-triminfo" in
|
||||
cases, there is a misplaced register, also provide clock to access
|
||||
that base.
|
||||
TRIMINFO at 0x1006c000 contains data for TMU channel 3
|
||||
TRIMINFO at 0x100a0000 contains data for TMU channel 4
|
||||
TRIMINFO at 0x10068000 contains data for TMU channel 2
|
||||
minItems: 1
|
||||
|
||||
'#thermal-sensor-cells': true
|
||||
|
||||
vtmu-supply:
|
||||
description: The regulator node supplying voltage to TMU.
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- clocks
|
||||
- clock-names
|
||||
- interrupts
|
||||
- reg
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/thermal/thermal-sensor.yaml
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: samsung,exynos5420-tmu-ext-triminfo
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
items:
|
||||
- description:
|
||||
Operational clock for TMU channel.
|
||||
- description:
|
||||
Optional clock to access the shared registers (e.g. TRIMINFO) of TMU
|
||||
channel.
|
||||
clock-names:
|
||||
items:
|
||||
- const: tmu_apbif
|
||||
- const: tmu_triminfo_apbif
|
||||
reg:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- samsung,exynos5433-tmu
|
||||
- samsung,exynos7-tmu
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
items:
|
||||
- description:
|
||||
Operational clock for TMU channel.
|
||||
- description:
|
||||
Optional special clock for functional operation of TMU channel.
|
||||
clock-names:
|
||||
items:
|
||||
- const: tmu_apbif
|
||||
- const: tmu_sclk
|
||||
reg:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- samsung,exynos3250-tmu
|
||||
- samsung,exynos4412-tmu
|
||||
- samsung,exynos4210-tmu
|
||||
- samsung,exynos5250-tmu
|
||||
- samsung,exynos5260-tmu
|
||||
- samsung,exynos5420-tmu
|
||||
then:
|
||||
properties:
|
||||
clocks:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
reg:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/exynos4.h>
|
||||
|
||||
tmu@100c0000 {
|
||||
compatible = "samsung,exynos4412-tmu";
|
||||
reg = <0x100C0000 0x100>;
|
||||
interrupt-parent = <&combiner>;
|
||||
interrupts = <2 4>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
clocks = <&clock CLK_TMU_APBIF>;
|
||||
clock-names = "tmu_apbif";
|
||||
vtmu-supply = <&ldo10_reg>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
tmu@10068000 {
|
||||
compatible = "samsung,exynos5420-tmu-ext-triminfo";
|
||||
reg = <0x10068000 0x100>, <0x1006c000 0x4>;
|
||||
interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
clocks = <&clock 318>, <&clock 318>; /* CLK_TMU */
|
||||
clock-names = "tmu_apbif", "tmu_triminfo_apbif";
|
||||
vtmu-supply = <&ldo7_reg>;
|
||||
};
|
||||
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
tmu@10060000 {
|
||||
compatible = "samsung,exynos5433-tmu";
|
||||
reg = <0x10060000 0x200>;
|
||||
interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#thermal-sensor-cells = <0>;
|
||||
clocks = <&cmu_peris 3>, /* CLK_PCLK_TMU0_APBIF */
|
||||
<&cmu_peris 35>; /* CLK_SCLK_TMU0 */
|
||||
clock-names = "tmu_apbif", "tmu_sclk";
|
||||
vtmu-supply = <&ldo3_reg>;
|
||||
};
|
@ -17135,11 +17135,12 @@ S: Supported
|
||||
F: drivers/net/ethernet/samsung/sxgbe/
|
||||
|
||||
SAMSUNG THERMAL DRIVER
|
||||
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||
M: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
|
||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
L: linux-pm@vger.kernel.org
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Supported
|
||||
T: git https://github.com/lmajewski/linux-samsung-thermal.git
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/thermal/samsung,exynos-thermal.yaml
|
||||
F: drivers/thermal/samsung/
|
||||
|
||||
SAMSUNG USB2 PHY DRIVER
|
||||
|
@ -351,7 +351,7 @@ static int brcmstb_thermal_probe(struct platform_device *pdev)
|
||||
|
||||
priv->thermal = thermal;
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
irq = platform_get_irq_optional(pdev, 0);
|
||||
if (irq >= 0) {
|
||||
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
|
||||
brcmstb_tmon_irq_thread,
|
||||
|
@ -28,6 +28,8 @@
|
||||
|
||||
#define LMH_REG_DCVS_INTR_CLR 0x8
|
||||
|
||||
#define LMH_ENABLE_ALGOS 1
|
||||
|
||||
struct lmh_hw_data {
|
||||
void __iomem *base;
|
||||
struct irq_domain *domain;
|
||||
@ -90,6 +92,7 @@ static int lmh_probe(struct platform_device *pdev)
|
||||
struct device_node *cpu_node;
|
||||
struct lmh_hw_data *lmh_data;
|
||||
int temp_low, temp_high, temp_arm, cpu_id, ret;
|
||||
unsigned int enable_alg;
|
||||
u32 node_id;
|
||||
|
||||
lmh_data = devm_kzalloc(dev, sizeof(*lmh_data), GFP_KERNEL);
|
||||
@ -141,32 +144,36 @@ static int lmh_probe(struct platform_device *pdev)
|
||||
if (!qcom_scm_lmh_dcvsh_available())
|
||||
return -EINVAL;
|
||||
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_CRNT, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling current subfunction\n", ret);
|
||||
enable_alg = (uintptr_t)of_device_get_match_data(dev);
|
||||
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_REL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling reliability subfunction\n", ret);
|
||||
if (enable_alg) {
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_CRNT, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling current subfunction\n", ret);
|
||||
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_BCL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling BCL subfunction\n", ret);
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_REL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling reliability subfunction\n", ret);
|
||||
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_THERMAL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret) {
|
||||
dev_err(dev, "Error %d enabling thermal subfunction\n", ret);
|
||||
return ret;
|
||||
}
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_BCL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret)
|
||||
dev_err(dev, "Error %d enabling BCL subfunction\n", ret);
|
||||
|
||||
ret = qcom_scm_lmh_profile_change(0x1);
|
||||
if (ret) {
|
||||
dev_err(dev, "Error %d changing profile\n", ret);
|
||||
return ret;
|
||||
ret = qcom_scm_lmh_dcvsh(LMH_SUB_FN_THERMAL, LMH_ALGO_MODE_ENABLE, 1,
|
||||
LMH_NODE_DCVS, node_id, 0);
|
||||
if (ret) {
|
||||
dev_err(dev, "Error %d enabling thermal subfunction\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = qcom_scm_lmh_profile_change(0x1);
|
||||
if (ret) {
|
||||
dev_err(dev, "Error %d changing profile\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
/* Set default thermal trips */
|
||||
@ -213,7 +220,8 @@ static int lmh_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
static const struct of_device_id lmh_table[] = {
|
||||
{ .compatible = "qcom,sdm845-lmh", },
|
||||
{ .compatible = "qcom,sdm845-lmh", .data = (void *)LMH_ENABLE_ALGOS},
|
||||
{ .compatible = "qcom,sm8150-lmh", },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, lmh_table);
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <linux/regmap.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/thermal.h>
|
||||
#include "../thermal_hwmon.h"
|
||||
#include "tsens.h"
|
||||
|
||||
/**
|
||||
@ -1060,6 +1061,10 @@ static int tsens_register(struct tsens_priv *priv)
|
||||
priv->sensor[i].tzd = tzd;
|
||||
if (priv->ops->enable)
|
||||
priv->ops->enable(priv, i);
|
||||
|
||||
if (devm_thermal_add_hwmon_sysfs(tzd))
|
||||
dev_warn(priv->dev,
|
||||
"Failed to add hwmon sysfs attributes\n");
|
||||
}
|
||||
|
||||
/* VER_0 require to set MIN and MAX THRESH
|
||||
|
@ -52,6 +52,8 @@ static int tegra_bpmp_thermal_get_temp(void *data, int *out_temp)
|
||||
err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg);
|
||||
if (err)
|
||||
return err;
|
||||
if (msg.rx.ret)
|
||||
return -EINVAL;
|
||||
|
||||
*out_temp = reply.get_temp.temp;
|
||||
|
||||
@ -63,6 +65,7 @@ static int tegra_bpmp_thermal_set_trips(void *data, int low, int high)
|
||||
struct tegra_bpmp_thermal_zone *zone = data;
|
||||
struct mrq_thermal_host_to_bpmp_request req;
|
||||
struct tegra_bpmp_message msg;
|
||||
int err;
|
||||
|
||||
memset(&req, 0, sizeof(req));
|
||||
req.type = CMD_THERMAL_SET_TRIP;
|
||||
@ -76,7 +79,13 @@ static int tegra_bpmp_thermal_set_trips(void *data, int low, int high)
|
||||
msg.tx.data = &req;
|
||||
msg.tx.size = sizeof(req);
|
||||
|
||||
return tegra_bpmp_transfer(zone->tegra->bpmp, &msg);
|
||||
err = tegra_bpmp_transfer(zone->tegra->bpmp, &msg);
|
||||
if (err)
|
||||
return err;
|
||||
if (msg.rx.ret)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void tz_device_update_work_fn(struct work_struct *work)
|
||||
@ -140,6 +149,8 @@ static int tegra_bpmp_thermal_get_num_zones(struct tegra_bpmp *bpmp,
|
||||
err = tegra_bpmp_transfer(bpmp, &msg);
|
||||
if (err)
|
||||
return err;
|
||||
if (msg.rx.ret)
|
||||
return -EINVAL;
|
||||
|
||||
*num_zones = reply.get_num_zones.num;
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
|
||||
#include "ti-thermal.h"
|
||||
#include "ti-bandgap.h"
|
||||
#include "../thermal_hwmon.h"
|
||||
|
||||
/* common data structures */
|
||||
struct ti_thermal_data {
|
||||
@ -106,14 +107,6 @@ static inline int __ti_thermal_get_temp(void *devdata, int *temp)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static inline int ti_thermal_get_temp(struct thermal_zone_device *thermal,
|
||||
int *temp)
|
||||
{
|
||||
struct ti_thermal_data *data = thermal->devdata;
|
||||
|
||||
return __ti_thermal_get_temp(data, temp);
|
||||
}
|
||||
|
||||
static int __ti_thermal_get_trend(void *p, int trip, enum thermal_trend *trend)
|
||||
{
|
||||
struct ti_thermal_data *data = p;
|
||||
@ -189,6 +182,9 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
|
||||
ti_bandgap_set_sensor_data(bgp, id, data);
|
||||
ti_bandgap_write_update_interval(bgp, data->sensor_id, interval);
|
||||
|
||||
if (devm_thermal_add_hwmon_sysfs(data->ti_thermal))
|
||||
dev_warn(bgp->dev, "failed to add hwmon sysfs attributes\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user