Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
a85f1c6a
Commit
a85f1c6a
authored
Jun 08, 2004
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Plain Diff
Merge kroah.com:/home/greg/linux/BK/bleed-2.6
into kroah.com:/home/greg/linux/BK/i2c-2.6
parents
056d7d3a
41ea291a
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
126 additions
and
30 deletions
+126
-30
drivers/i2c/busses/i2c-piix4.c
drivers/i2c/busses/i2c-piix4.c
+1
-1
drivers/i2c/chips/it87.c
drivers/i2c/chips/it87.c
+22
-26
drivers/i2c/chips/w83627hf.c
drivers/i2c/chips/w83627hf.c
+91
-3
include/linux/i2c-id.h
include/linux/i2c-id.h
+12
-0
No files found.
drivers/i2c/busses/i2c-piix4.c
View file @
a85f1c6a
...
@@ -138,7 +138,7 @@ static int __devinit piix4_setup(struct pci_dev *PIIX4_dev,
...
@@ -138,7 +138,7 @@ static int __devinit piix4_setup(struct pci_dev *PIIX4_dev,
dev_info
(
&
PIIX4_dev
->
dev
,
"Found %s device
\n
"
,
pci_name
(
PIIX4_dev
));
dev_info
(
&
PIIX4_dev
->
dev
,
"Found %s device
\n
"
,
pci_name
(
PIIX4_dev
));
if
(
ibm_dmi_probe
())
{
if
(
ibm_dmi_probe
()
&&
PIIX4_dev
->
vendor
==
PCI_VENDOR_ID_INTEL
)
{
dev_err
(
&
PIIX4_dev
->
dev
,
"IBM Laptop detected; this module "
dev_err
(
&
PIIX4_dev
->
dev
,
"IBM Laptop detected; this module "
"may corrupt your serial eeprom! Refusing to load "
"may corrupt your serial eeprom! Refusing to load "
"module!
\n
"
);
"module!
\n
"
);
...
...
drivers/i2c/chips/it87.c
View file @
a85f1c6a
...
@@ -128,15 +128,15 @@ static int reset;
...
@@ -128,15 +128,15 @@ static int reset;
#define IT87_REG_FAN(nr) (0x0d + (nr))
#define IT87_REG_FAN(nr) (0x0d + (nr))
#define IT87_REG_FAN_MIN(nr) (0x10 + (nr))
#define IT87_REG_FAN_MIN(nr) (0x10 + (nr))
#define IT87_REG_FAN_
CTRL
0x13
#define IT87_REG_FAN_
MAIN_CTRL
0x13
#define IT87_REG_VIN(nr) (0x20 + (nr))
#define IT87_REG_VIN(nr) (0x20 + (nr))
#define IT87_REG_TEMP(nr) (0x29 + (nr))
#define IT87_REG_TEMP(nr) (0x29 + (nr))
#define IT87_REG_VIN_MAX(nr) (0x30 + (nr) * 2)
#define IT87_REG_VIN_MAX(nr) (0x30 + (nr) * 2)
#define IT87_REG_VIN_MIN(nr) (0x31 + (nr) * 2)
#define IT87_REG_VIN_MIN(nr) (0x31 + (nr) * 2)
#define IT87_REG_TEMP_HIGH(nr) (0x40 + (
(nr) * 2)
)
#define IT87_REG_TEMP_HIGH(nr) (0x40 + (
nr) * 2
)
#define IT87_REG_TEMP_LOW(nr) (0x41 + (
(nr) * 2)
)
#define IT87_REG_TEMP_LOW(nr) (0x41 + (
nr) * 2
)
#define IT87_REG_I2C_ADDR 0x48
#define IT87_REG_I2C_ADDR 0x48
...
@@ -145,8 +145,8 @@ static int reset;
...
@@ -145,8 +145,8 @@ static int reset;
#define IT87_REG_CHIPID 0x58
#define IT87_REG_CHIPID 0x58
#define IN_TO_REG(val) (SENSORS_LIMIT((((val)
* 10
+ 8)/16),0,255))
#define IN_TO_REG(val) (SENSORS_LIMIT((((val) + 8)/16),0,255))
#define IN_FROM_REG(val) ((
(val) * 16) / 10
)
#define IN_FROM_REG(val) ((
val) * 16
)
static
inline
u8
FAN_TO_REG
(
long
rpm
,
int
div
)
static
inline
u8
FAN_TO_REG
(
long
rpm
,
int
div
)
{
{
...
@@ -159,9 +159,9 @@ static inline u8 FAN_TO_REG(long rpm, int div)
...
@@ -159,9 +159,9 @@ static inline u8 FAN_TO_REG(long rpm, int div)
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
#define FAN_FROM_REG(val,div) ((val)==0?-1:(val)==255?0:1350000/((val)*(div)))
#define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-5
)/1
0):\
#define TEMP_TO_REG(val) (SENSORS_LIMIT(((val)<0?(((val)-5
00)/100
0):\
((val)+5
)/10),0,255
))
((val)+5
00)/1000),-128,127
))
#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10)
#define TEMP_FROM_REG(val) (((val)>0x80?(val)-0x100:(val))*10
00
)
#define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\
#define VID_FROM_REG(val) ((val)==0x1f?0:(val)>=0x10?510-(val)*10:\
205-(val)*5)
205-(val)*5)
...
@@ -231,19 +231,19 @@ static int it87_id = 0;
...
@@ -231,19 +231,19 @@ static int it87_id = 0;
static
ssize_t
show_in
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_in
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in
[
nr
])
*
10
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in
[
nr
]));
}
}
static
ssize_t
show_in_min
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_in_min
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in_min
[
nr
])
*
10
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in_min
[
nr
]));
}
}
static
ssize_t
show_in_max
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_in_max
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in_max
[
nr
])
*
10
);
return
sprintf
(
buf
,
"%d
\n
"
,
IN_FROM_REG
(
data
->
in_max
[
nr
]));
}
}
static
ssize_t
set_in_min
(
struct
device
*
dev
,
const
char
*
buf
,
static
ssize_t
set_in_min
(
struct
device
*
dev
,
const
char
*
buf
,
...
@@ -251,7 +251,7 @@ static ssize_t set_in_min(struct device *dev, const char *buf,
...
@@ -251,7 +251,7 @@ static ssize_t set_in_min(struct device *dev, const char *buf,
{
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
unsigned
long
val
=
simple_strtoul
(
buf
,
NULL
,
10
)
/
10
;
unsigned
long
val
=
simple_strtoul
(
buf
,
NULL
,
10
);
data
->
in_min
[
nr
]
=
IN_TO_REG
(
val
);
data
->
in_min
[
nr
]
=
IN_TO_REG
(
val
);
it87_write_value
(
client
,
IT87_REG_VIN_MIN
(
nr
),
it87_write_value
(
client
,
IT87_REG_VIN_MIN
(
nr
),
data
->
in_min
[
nr
]);
data
->
in_min
[
nr
]);
...
@@ -262,7 +262,7 @@ static ssize_t set_in_max(struct device *dev, const char *buf,
...
@@ -262,7 +262,7 @@ static ssize_t set_in_max(struct device *dev, const char *buf,
{
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
unsigned
long
val
=
simple_strtoul
(
buf
,
NULL
,
10
)
/
10
;
unsigned
long
val
=
simple_strtoul
(
buf
,
NULL
,
10
);
data
->
in_max
[
nr
]
=
IN_TO_REG
(
val
);
data
->
in_max
[
nr
]
=
IN_TO_REG
(
val
);
it87_write_value
(
client
,
IT87_REG_VIN_MAX
(
nr
),
it87_write_value
(
client
,
IT87_REG_VIN_MAX
(
nr
),
data
->
in_max
[
nr
]);
data
->
in_max
[
nr
]);
...
@@ -325,24 +325,24 @@ show_in_offset(8);
...
@@ -325,24 +325,24 @@ show_in_offset(8);
static
ssize_t
show_temp
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_temp
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp
[
nr
])
*
100
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp
[
nr
]));
}
}
static
ssize_t
show_temp_max
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_temp_max
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp_high
[
nr
])
*
100
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp_high
[
nr
]));
}
}
static
ssize_t
show_temp_min
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
static
ssize_t
show_temp_min
(
struct
device
*
dev
,
char
*
buf
,
int
nr
)
{
{
struct
it87_data
*
data
=
it87_update_device
(
dev
);
struct
it87_data
*
data
=
it87_update_device
(
dev
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp_low
[
nr
])
*
100
);
return
sprintf
(
buf
,
"%d
\n
"
,
TEMP_FROM_REG
(
data
->
temp_low
[
nr
]));
}
}
static
ssize_t
set_temp_max
(
struct
device
*
dev
,
const
char
*
buf
,
static
ssize_t
set_temp_max
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
,
int
nr
)
size_t
count
,
int
nr
)
{
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
int
val
=
simple_strtol
(
buf
,
NULL
,
10
)
/
100
;
int
val
=
simple_strtol
(
buf
,
NULL
,
10
);
data
->
temp_high
[
nr
]
=
TEMP_TO_REG
(
val
);
data
->
temp_high
[
nr
]
=
TEMP_TO_REG
(
val
);
it87_write_value
(
client
,
IT87_REG_TEMP_HIGH
(
nr
),
data
->
temp_high
[
nr
]);
it87_write_value
(
client
,
IT87_REG_TEMP_HIGH
(
nr
),
data
->
temp_high
[
nr
]);
return
count
;
return
count
;
...
@@ -352,7 +352,7 @@ static ssize_t set_temp_min(struct device *dev, const char *buf,
...
@@ -352,7 +352,7 @@ static ssize_t set_temp_min(struct device *dev, const char *buf,
{
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
int
val
=
simple_strtol
(
buf
,
NULL
,
10
)
/
100
;
int
val
=
simple_strtol
(
buf
,
NULL
,
10
);
data
->
temp_low
[
nr
]
=
TEMP_TO_REG
(
val
);
data
->
temp_low
[
nr
]
=
TEMP_TO_REG
(
val
);
it87_write_value
(
client
,
IT87_REG_TEMP_LOW
(
nr
),
data
->
temp_low
[
nr
]);
it87_write_value
(
client
,
IT87_REG_TEMP_LOW
(
nr
),
data
->
temp_low
[
nr
]);
return
count
;
return
count
;
...
@@ -773,9 +773,7 @@ static int it87_detach_client(struct i2c_client *client)
...
@@ -773,9 +773,7 @@ static int it87_detach_client(struct i2c_client *client)
We don't want to lock the whole ISA bus, so we lock each client
We don't want to lock the whole ISA bus, so we lock each client
separately.
separately.
We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks,
We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks,
would slow down the IT87 access and should not be necessary.
would slow down the IT87 access and should not be necessary. */
There are some ugly typecasts here, but the good new is - they should
nowhere else be necessary! */
static
int
it87_read_value
(
struct
i2c_client
*
client
,
u8
reg
)
static
int
it87_read_value
(
struct
i2c_client
*
client
,
u8
reg
)
{
{
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
...
@@ -795,9 +793,7 @@ static int it87_read_value(struct i2c_client *client, u8 reg)
...
@@ -795,9 +793,7 @@ static int it87_read_value(struct i2c_client *client, u8 reg)
We don't want to lock the whole ISA bus, so we lock each client
We don't want to lock the whole ISA bus, so we lock each client
separately.
separately.
We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks,
We ignore the IT87 BUSY flag at this moment - it could lead to deadlocks,
would slow down the IT87 access and should not be necessary.
would slow down the IT87 access and should not be necessary. */
There are some ugly typecasts here, but the good new is - they should
nowhere else be necessary! */
static
int
it87_write_value
(
struct
i2c_client
*
client
,
u8
reg
,
u8
value
)
static
int
it87_write_value
(
struct
i2c_client
*
client
,
u8
reg
,
u8
value
)
{
{
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
struct
it87_data
*
data
=
i2c_get_clientdata
(
client
);
...
@@ -840,11 +836,11 @@ static void it87_init_client(struct i2c_client *client, struct it87_data *data)
...
@@ -840,11 +836,11 @@ static void it87_init_client(struct i2c_client *client, struct it87_data *data)
}
}
/* Check if tachometers are reset manually or by some reason */
/* Check if tachometers are reset manually or by some reason */
tmp
=
it87_read_value
(
client
,
IT87_REG_FAN_CTRL
);
tmp
=
it87_read_value
(
client
,
IT87_REG_FAN_
MAIN_
CTRL
);
if
((
tmp
&
0x70
)
==
0
)
{
if
((
tmp
&
0x70
)
==
0
)
{
/* Enable all fan tachometers */
/* Enable all fan tachometers */
tmp
=
(
tmp
&
0x8f
)
|
0x70
;
tmp
=
(
tmp
&
0x8f
)
|
0x70
;
it87_write_value
(
client
,
IT87_REG_FAN_CTRL
,
tmp
);
it87_write_value
(
client
,
IT87_REG_FAN_
MAIN_
CTRL
,
tmp
);
}
}
/* Start monitoring */
/* Start monitoring */
...
...
drivers/i2c/chips/w83627hf.c
View file @
a85f1c6a
...
@@ -199,7 +199,7 @@ superio_exit(void)
...
@@ -199,7 +199,7 @@ superio_exit(void)
#define W83627THF_REG_PWM2 0x03
/* 697HF and 637HF too */
#define W83627THF_REG_PWM2 0x03
/* 697HF and 637HF too */
#define W83627THF_REG_PWM3 0x11
/* 637HF too */
#define W83627THF_REG_PWM3 0x11
/* 637HF too */
#define W83627THF_REG_VRM_OVT_CFG 0x18
/* 637HF too
, unused yet
*/
#define W83627THF_REG_VRM_OVT_CFG 0x18
/* 637HF too */
static
const
u8
regpwm_627hf
[]
=
{
W83627HF_REG_PWM1
,
W83627HF_REG_PWM2
};
static
const
u8
regpwm_627hf
[]
=
{
W83627HF_REG_PWM1
,
W83627HF_REG_PWM2
};
static
const
u8
regpwm
[]
=
{
W83627THF_REG_PWM1
,
W83627THF_REG_PWM2
,
static
const
u8
regpwm
[]
=
{
W83627THF_REG_PWM1
,
W83627THF_REG_PWM2
,
...
@@ -222,7 +222,7 @@ static const u8 BIT_SCFG2[] = { 0x10, 0x20, 0x40 };
...
@@ -222,7 +222,7 @@ static const u8 BIT_SCFG2[] = { 0x10, 0x20, 0x40 };
these macros are called: arguments may be evaluated more than once.
these macros are called: arguments may be evaluated more than once.
Fixing this is just not worth it. */
Fixing this is just not worth it. */
#define IN_TO_REG(val) (SENSORS_LIMIT((((val) + 8)/16),0,255))
#define IN_TO_REG(val) (SENSORS_LIMIT((((val) + 8)/16),0,255))
#define IN_FROM_REG(val) ((val) * 16
+ 5
)
#define IN_FROM_REG(val) ((val) * 16)
static
inline
u8
FAN_TO_REG
(
long
rpm
,
int
div
)
static
inline
u8
FAN_TO_REG
(
long
rpm
,
int
div
)
{
{
...
@@ -312,6 +312,7 @@ struct w83627hf_data {
...
@@ -312,6 +312,7 @@ struct w83627hf_data {
Default = 3435.
Default = 3435.
Other Betas unimplemented */
Other Betas unimplemented */
u8
vrm
;
u8
vrm
;
u8
vrm_ovt
;
/* Register value, 627thf & 637hf only */
};
};
...
@@ -391,7 +392,6 @@ sysfs_in_offset(offset) \
...
@@ -391,7 +392,6 @@ sysfs_in_offset(offset) \
sysfs_in_reg_offset(min, offset) \
sysfs_in_reg_offset(min, offset) \
sysfs_in_reg_offset(max, offset)
sysfs_in_reg_offset(max, offset)
sysfs_in_offsets
(
0
)
sysfs_in_offsets
(
1
)
sysfs_in_offsets
(
1
)
sysfs_in_offsets
(
2
)
sysfs_in_offsets
(
2
)
sysfs_in_offsets
(
3
)
sysfs_in_offsets
(
3
)
...
@@ -401,6 +401,89 @@ sysfs_in_offsets(6)
...
@@ -401,6 +401,89 @@ sysfs_in_offsets(6)
sysfs_in_offsets
(
7
)
sysfs_in_offsets
(
7
)
sysfs_in_offsets
(
8
)
sysfs_in_offsets
(
8
)
/* use a different set of functions for in0 */
static
ssize_t
show_in_0
(
struct
w83627hf_data
*
data
,
char
*
buf
,
u8
reg
)
{
long
in0
;
if
((
data
->
vrm_ovt
&
0x01
)
&&
(
w83627thf
==
data
->
type
||
w83637hf
==
data
->
type
))
/* use VRM9 calculation */
in0
=
(
long
)((
reg
*
488
+
70000
+
50
)
/
100
);
else
/* use VRM8 (standard) calculation */
in0
=
(
long
)
IN_FROM_REG
(
reg
);
return
sprintf
(
buf
,
"%ld
\n
"
,
in0
);
}
static
ssize_t
show_regs_in_0
(
struct
device
*
dev
,
char
*
buf
)
{
struct
w83627hf_data
*
data
=
w83627hf_update_device
(
dev
);
return
show_in_0
(
data
,
buf
,
data
->
in
[
0
]);
}
static
ssize_t
show_regs_in_min0
(
struct
device
*
dev
,
char
*
buf
)
{
struct
w83627hf_data
*
data
=
w83627hf_update_device
(
dev
);
return
show_in_0
(
data
,
buf
,
data
->
in_min
[
0
]);
}
static
ssize_t
show_regs_in_max0
(
struct
device
*
dev
,
char
*
buf
)
{
struct
w83627hf_data
*
data
=
w83627hf_update_device
(
dev
);
return
show_in_0
(
data
,
buf
,
data
->
in_max
[
0
]);
}
static
ssize_t
store_regs_in_min0
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
w83627hf_data
*
data
=
i2c_get_clientdata
(
client
);
u32
val
;
val
=
simple_strtoul
(
buf
,
NULL
,
10
);
if
((
data
->
vrm_ovt
&
0x01
)
&&
(
w83627thf
==
data
->
type
||
w83637hf
==
data
->
type
))
/* use VRM9 calculation */
data
->
in_min
[
0
]
=
(
u8
)(((
val
*
100
)
-
70000
+
244
)
/
488
);
else
/* use VRM8 (standard) calculation */
data
->
in_min
[
0
]
=
IN_TO_REG
(
val
);
w83627hf_write_value
(
client
,
W83781D_REG_IN_MIN
(
0
),
data
->
in_min
[
0
]);
return
count
;
}
static
ssize_t
store_regs_in_max0
(
struct
device
*
dev
,
const
char
*
buf
,
size_t
count
)
{
struct
i2c_client
*
client
=
to_i2c_client
(
dev
);
struct
w83627hf_data
*
data
=
i2c_get_clientdata
(
client
);
u32
val
;
val
=
simple_strtoul
(
buf
,
NULL
,
10
);
if
((
data
->
vrm_ovt
&
0x01
)
&&
(
w83627thf
==
data
->
type
||
w83637hf
==
data
->
type
))
/* use VRM9 calculation */
data
->
in_max
[
0
]
=
(
u8
)(((
val
*
100
)
-
70000
+
244
)
/
488
);
else
/* use VRM8 (standard) calculation */
data
->
in_max
[
0
]
=
IN_TO_REG
(
val
);
w83627hf_write_value
(
client
,
W83781D_REG_IN_MAX
(
0
),
data
->
in_max
[
0
]);
return
count
;
}
static
DEVICE_ATTR
(
in0_input
,
S_IRUGO
,
show_regs_in_0
,
NULL
)
static
DEVICE_ATTR
(
in0_min
,
S_IRUGO
|
S_IWUSR
,
show_regs_in_min0
,
store_regs_in_min0
)
static
DEVICE_ATTR
(
in0_max
,
S_IRUGO
|
S_IWUSR
,
show_regs_in_max0
,
store_regs_in_max0
)
#define device_create_file_in(client, offset) \
#define device_create_file_in(client, offset) \
do { \
do { \
device_create_file(&client->dev, &dev_attr_in##offset##_input)
;
\
device_create_file(&client->dev, &dev_attr_in##offset##_input)
;
\
...
@@ -1191,6 +1274,11 @@ static void w83627hf_init_client(struct i2c_client *client)
...
@@ -1191,6 +1274,11 @@ static void w83627hf_init_client(struct i2c_client *client)
data
->
vid
=
w83627thf_read_gpio5
(
client
)
&
0x1f
;
data
->
vid
=
w83627thf_read_gpio5
(
client
)
&
0x1f
;
}
}
/* Read VRM & OVT Config only once */
if
(
w83627thf
==
data
->
type
||
w83637hf
==
data
->
type
)
data
->
vrm_ovt
=
w83627hf_read_value
(
client
,
W83627THF_REG_VRM_OVT_CFG
);
/* Convert VID to voltage based on default VRM */
/* Convert VID to voltage based on default VRM */
data
->
vrm
=
DEFAULT_VRM
;
data
->
vrm
=
DEFAULT_VRM
;
if
(
type
!=
w83697hf
)
if
(
type
!=
w83697hf
)
...
...
include/linux/i2c-id.h
View file @
a85f1c6a
...
@@ -101,6 +101,14 @@
...
@@ -101,6 +101,14 @@
#define I2C_DRIVERID_UDA1342 53
/* UDA1342 audio codec */
#define I2C_DRIVERID_UDA1342 53
/* UDA1342 audio codec */
#define I2C_DRIVERID_ADV7170 54
/* video encoder */
#define I2C_DRIVERID_ADV7170 54
/* video encoder */
#define I2C_DRIVERID_RADEON 55
/* I2C bus on Radeon boards */
#define I2C_DRIVERID_RADEON 55
/* I2C bus on Radeon boards */
#define I2C_DRIVERID_MAX1617 56
/* temp sensor */
#define I2C_DRIVERID_SAA7191 57
/* video encoder */
#define I2C_DRIVERID_INDYCAM 58
/* SGI IndyCam */
#define I2C_DRIVERID_BT832 59
/* CMOS camera video processor */
#define I2C_DRIVERID_TDA9887 60
/* TDA988x IF-PLL demodulator */
#define I2C_DRIVERID_OVCAMCHIP 61
/* OmniVision CMOS image sens. */
#define I2C_DRIVERID_TDA7313 62
/* TDA7313 audio processor */
#define I2C_DRIVERID_MAX6900 63
/* MAX6900 real-time clock */
#define I2C_DRIVERID_EXP0 0xF0
/* experimental use id's */
#define I2C_DRIVERID_EXP0 0xF0
/* experimental use id's */
...
@@ -264,6 +272,10 @@
...
@@ -264,6 +272,10 @@
#define I2C_HW_SMBUS_SCX200 0x0b
#define I2C_HW_SMBUS_SCX200 0x0b
#define I2C_HW_SMBUS_NFORCE2 0x0c
#define I2C_HW_SMBUS_NFORCE2 0x0c
#define I2C_HW_SMBUS_W9968CF 0x0d
#define I2C_HW_SMBUS_W9968CF 0x0d
#define I2C_HW_SMBUS_OV511 0x0e
/* OV511(+) USB 1.1 webcam ICs */
#define I2C_HW_SMBUS_OV518 0x0f
/* OV518(+) USB 1.1 webcam ICs */
#define I2C_HW_SMBUS_OV519 0x10
/* OV519 USB 1.1 webcam IC */
#define I2C_HW_SMBUS_OVFX2 0x11
/* Cypress/OmniVision FX2 webcam */
/* --- ISA pseudo-adapter */
/* --- ISA pseudo-adapter */
#define I2C_HW_ISA 0x00
#define I2C_HW_ISA 0x00
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment