projects
/
linux-drm-fsl-dcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'acpi-ec'
[linux-drm-fsl-dcu.git]
/
drivers
/
hwmon
/
jc42.c
diff --git
a/drivers/hwmon/jc42.c
b/drivers/hwmon/jc42.c
index 388f8bcd898e879c84dd2497f4efee307456bfb0..996bdfd5cf25f93679857407951253d1f1e5b5ca 100644
(file)
--- a/
drivers/hwmon/jc42.c
+++ b/
drivers/hwmon/jc42.c
@@
-201,7
+201,7
@@
struct jc42_data {
#define JC42_TEMP_MIN 0
#define JC42_TEMP_MAX 125000
#define JC42_TEMP_MIN 0
#define JC42_TEMP_MAX 125000
-static u16 jc42_temp_to_reg(
int
temp, bool extended)
+static u16 jc42_temp_to_reg(
long
temp, bool extended)
{
int ntemp = clamp_val(temp,
extended ? JC42_TEMP_MIN_EXTENDED :
{
int ntemp = clamp_val(temp,
extended ? JC42_TEMP_MIN_EXTENDED :
@@
-213,11
+213,7
@@
static u16 jc42_temp_to_reg(int temp, bool extended)
static int jc42_temp_from_reg(s16 reg)
{
static int jc42_temp_from_reg(s16 reg)
{
- reg &= 0x1fff;
-
- /* sign extend register */
- if (reg & 0x1000)
- reg |= 0xf000;
+ reg = sign_extend32(reg, 12);
/* convert from 0.0625 to 0.001 resolution */
return reg * 125 / 2;
/* convert from 0.0625 to 0.001 resolution */
return reg * 125 / 2;
@@
-308,15
+304,18
@@
static ssize_t set_temp_crit_hyst(struct device *dev,
const char *buf, size_t count)
{
struct jc42_data *data = dev_get_drvdata(dev);
const char *buf, size_t count)
{
struct jc42_data *data = dev_get_drvdata(dev);
-
unsigned
long val;
+ long val;
int diff, hyst;
int err;
int ret = count;
int diff, hyst;
int err;
int ret = count;
- if (kstrto
u
l(buf, 10, &val) < 0)
+ if (kstrtol(buf, 10, &val) < 0)
return -EINVAL;
return -EINVAL;
+ val = clamp_val(val, (data->extended ? JC42_TEMP_MIN_EXTENDED :
+ JC42_TEMP_MIN) - 6000, JC42_TEMP_MAX);
diff = jc42_temp_from_reg(data->temp[t_crit]) - val;
diff = jc42_temp_from_reg(data->temp[t_crit]) - val;
+
hyst = 0;
if (diff > 0) {
if (diff < 2250)
hyst = 0;
if (diff > 0) {
if (diff < 2250)