mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
thermal: tsens: Check if the IP is correctly enabled by firmware
The SROT registers are initialised by the secure firmware at boot. We don't have write access to the registers. Check if the block is enabled before continuing. Signed-off-by: Amit Kucheria <[email protected]> Reviewed-by: Bjorn Andersson <[email protected]> Signed-off-by: Eduardo Valentin <[email protected]>
This commit is contained in:
parent
c130a7602e
commit
c8c3b091b6
1 changed files with 17 additions and 0 deletions
|
|
@ -12,6 +12,10 @@
|
|||
#include <linux/regmap.h>
|
||||
#include "tsens.h"
|
||||
|
||||
/* SROT */
|
||||
#define TSENS_EN BIT(0)
|
||||
|
||||
/* TM */
|
||||
#define STATUS_OFFSET 0x30
|
||||
#define SN_ADDR_OFFSET 0x4
|
||||
#define SN_ST_TEMP_MASK 0x3ff
|
||||
|
|
@ -119,7 +123,10 @@ int __init init_common(struct tsens_device *tmdev)
|
|||
{
|
||||
void __iomem *tm_base, *srot_base;
|
||||
struct resource *res;
|
||||
u32 code;
|
||||
int ret;
|
||||
struct platform_device *op = of_find_device_by_node(tmdev->dev->of_node);
|
||||
u16 ctrl_offset = tmdev->reg_offsets[SROT_CTRL_OFFSET];
|
||||
|
||||
if (!op)
|
||||
return -EINVAL;
|
||||
|
|
@ -151,5 +158,15 @@ int __init init_common(struct tsens_device *tmdev)
|
|||
if (IS_ERR(tmdev->tm_map))
|
||||
return PTR_ERR(tmdev->tm_map);
|
||||
|
||||
if (tmdev->srot_map) {
|
||||
ret = regmap_read(tmdev->srot_map, ctrl_offset, &code);
|
||||
if (ret)
|
||||
return ret;
|
||||
if (!(code & TSENS_EN)) {
|
||||
dev_err(tmdev->dev, "tsens device is not enabled\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue