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
bef87257
Commit
bef87257
authored
Jan 26, 2004
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Plain Diff
Merge kroah.com:/home/greg/linux/BK/bleed-2.5
into kroah.com:/home/greg/linux/BK/i2c-2.6
parents
01477f1c
ed5b010d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
67 additions
and
90 deletions
+67
-90
Documentation/i2c/porting-clients
Documentation/i2c/porting-clients
+1
-4
drivers/i2c/busses/i2c-parport.h
drivers/i2c/busses/i2c-parport.h
+4
-3
drivers/i2c/busses/i2c-philips-par.c
drivers/i2c/busses/i2c-philips-par.c
+2
-2
drivers/i2c/busses/i2c-piix4.c
drivers/i2c/busses/i2c-piix4.c
+27
-21
drivers/i2c/chips/lm75.c
drivers/i2c/chips/lm75.c
+6
-6
drivers/i2c/chips/lm78.c
drivers/i2c/chips/lm78.c
+6
-6
drivers/i2c/chips/lm85.c
drivers/i2c/chips/lm85.c
+21
-48
No files found.
Documentation/i2c/porting-clients
View file @
bef87257
...
...
@@ -92,10 +92,7 @@ Technical changes:
i2c_get_clientdata(client) instead.
* [Interface] Init function should not print anything. Make sure
there is a MODULE_LICENSE() line. MODULE_PARM() is replaced
by module_param(). Note that module_param has a third parameter,
that you should set to 0 by default. See include/linux/moduleparam.h
for details.
there is a MODULE_LICENSE() line.
Coding policy:
...
...
drivers/i2c/busses/i2c-parport.h
View file @
bef87257
...
...
@@ -67,12 +67,13 @@ static struct adapter_parm adapter_parm[] = {
.
getsda
=
{
0x40
,
STAT
,
1
},
.
getscl
=
{
0x08
,
STAT
,
1
},
},
/* type 4: ADM
1032 evaluation board
*/
/* type 4: ADM
1025 and ADM1032 evaluation boards
*/
{
.
setsda
=
{
0x02
,
DATA
,
1
},
.
setscl
=
{
0x01
,
DATA
,
1
},
.
getsda
=
{
0x10
,
STAT
,
1
},
.
init
=
{
0xf0
,
DATA
,
0
},
.
init
=
{
0xf0
,
DATA
,
0
},
/* ADM1025 doesn't need this,
but it doesn't hurt */
},
};
...
...
@@ -84,4 +85,4 @@ MODULE_PARM_DESC(type,
" 1 = home brew teletext adapter
\n
"
" 2 = Velleman K8000 adapter
\n
"
" 3 = ELV adapter
\n
"
" 4 = ADM
1032 evalulation board
\n
"
);
" 4 = ADM
1025 and ADM1032 evaluation boards
\n
"
);
drivers/i2c/busses/i2c-philips-par.c
View file @
bef87257
...
...
@@ -184,8 +184,8 @@ static void i2c_parport_attach (struct parport *port)
return
;
}
/* reset hardware to sane state */
bit_lp_
setsda
(
port
,
1
);
bit_lp_
setscl
(
port
,
1
);
adapter
->
bit_lp_data
.
setsda
(
port
,
1
);
adapter
->
bit_lp_data
.
setscl
(
port
,
1
);
parport_release
(
adapter
->
pdev
);
if
(
i2c_bit_add_bus
(
&
adapter
->
adapter
)
<
0
)
{
...
...
drivers/i2c/busses/i2c-piix4.c
View file @
bef87257
...
...
@@ -68,6 +68,9 @@ struct sd {
#define SMBSLVEVT (0xA + piix4_smba)
#define SMBSLVDAT (0xC + piix4_smba)
/* count for request_region */
#define SMBIOSIZE 8
/* PCI Address Constants */
#define SMBBA 0x090
#define SMBHSTCFG 0x0D2
...
...
@@ -112,14 +115,13 @@ MODULE_PARM_DESC(fix_hstcfg,
static
int
piix4_transaction
(
void
);
static
unsigned
short
piix4_smba
=
0
;
static
struct
i2c_adapter
piix4_adapter
;
/*
* Get DMI information.
*/
static
int
ibm_dmi_probe
(
void
)
static
int
__devinit
ibm_dmi_probe
(
void
)
{
#ifdef CONFIG_X86
extern
int
is_unsafe_smbus
;
...
...
@@ -129,9 +131,9 @@ static int ibm_dmi_probe(void)
#endif
}
static
int
piix4_setup
(
struct
pci_dev
*
PIIX4_dev
,
const
struct
pci_device_id
*
id
)
static
int
__devinit
piix4_setup
(
struct
pci_dev
*
PIIX4_dev
,
const
struct
pci_device_id
*
id
)
{
int
error_return
=
0
;
unsigned
char
temp
;
/* match up the function */
...
...
@@ -144,8 +146,7 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
dev_err
(
&
PIIX4_dev
->
dev
,
"IBM Laptop detected; this module "
"may corrupt your serial eeprom! Refusing to load "
"module!
\n
"
);
error_return
=
-
EPERM
;
goto
END
;
return
-
EPERM
;
}
/* Determine the address of the SMBus areas */
...
...
@@ -163,11 +164,10 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
}
}
if
(
!
request_region
(
piix4_smba
,
8
,
"piix4-smbus"
))
{
if
(
!
request_region
(
piix4_smba
,
SMBIOSIZE
,
"piix4-smbus"
))
{
dev_err
(
&
PIIX4_dev
->
dev
,
"SMB region 0x%x already in use!
\n
"
,
piix4_smba
);
error_return
=
-
ENODEV
;
goto
END
;
return
-
ENODEV
;
}
pci_read_config_byte
(
PIIX4_dev
,
SMBHSTCFG
,
&
temp
);
...
...
@@ -214,8 +214,9 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
}
else
{
dev_err
(
&
PIIX4_dev
->
dev
,
"Host SMBus controller not enabled!
\n
"
);
error_return
=
-
ENODEV
;
goto
END
;
release_region
(
piix4_smba
,
SMBIOSIZE
);
piix4_smba
=
0
;
return
-
ENODEV
;
}
}
...
...
@@ -231,8 +232,7 @@ static int piix4_setup(struct pci_dev *PIIX4_dev, const struct pci_device_id *id
dev_dbg
(
&
PIIX4_dev
->
dev
,
"SMBREV = 0x%X
\n
"
,
temp
);
dev_dbg
(
&
PIIX4_dev
->
dev
,
"SMBA = 0x%X
\n
"
,
piix4_smba
);
END:
return
error_return
;
return
0
;
}
/* Another internally used function */
...
...
@@ -465,7 +465,8 @@ static struct pci_device_id piix4_ids[] = {
{
0
,
}
};
static
int
__devinit
piix4_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
static
int
__devinit
piix4_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
int
retval
;
...
...
@@ -479,17 +480,24 @@ static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id
snprintf
(
piix4_adapter
.
name
,
I2C_NAME_SIZE
,
"SMBus PIIX4 adapter at %04x"
,
piix4_smba
);
retval
=
i2c_add_adapter
(
&
piix4_adapter
);
if
((
retval
=
i2c_add_adapter
(
&
piix4_adapter
)))
{
dev_err
(
&
dev
->
dev
,
"Couldn't register adapter!
\n
"
);
release_region
(
piix4_smba
,
SMBIOSIZE
);
piix4_smba
=
0
;
}
return
retval
;
}
static
void
__devexit
piix4_remove
(
struct
pci_dev
*
dev
)
{
i2c_del_adapter
(
&
piix4_adapter
);
if
(
piix4_smba
)
{
i2c_del_adapter
(
&
piix4_adapter
);
release_region
(
piix4_smba
,
SMBIOSIZE
);
piix4_smba
=
0
;
}
}
static
struct
pci_driver
piix4_driver
=
{
.
name
=
"piix4-smbus"
,
.
id_table
=
piix4_ids
,
...
...
@@ -502,15 +510,13 @@ static int __init i2c_piix4_init(void)
return
pci_module_init
(
&
piix4_driver
);
}
static
void
__exit
i2c_piix4_exit
(
void
)
{
pci_unregister_driver
(
&
piix4_driver
);
release_region
(
piix4_smba
,
8
);
}
MODULE_AUTHOR
(
"Frodo Looijaard <frodol@dds.nl> and
Philip Edelbrock <phil@netroedge.com>"
);
MODULE_AUTHOR
(
"Frodo Looijaard <frodol@dds.nl> and "
"
Philip Edelbrock <phil@netroedge.com>"
);
MODULE_DESCRIPTION
(
"PIIX4 SMBus driver"
);
MODULE_LICENSE
(
"GPL"
);
...
...
drivers/i2c/chips/lm75.c
View file @
bef87257
...
...
@@ -104,9 +104,9 @@ static ssize_t set_##value(struct device *dev, const char *buf, size_t count) \
set
(
temp_max
,
LM75_REG_TEMP_OS
);
set
(
temp_hyst
,
LM75_REG_TEMP_HYST
);
static
DEVICE_ATTR
(
temp_max
,
S_IWUSR
|
S_IRUGO
,
show_temp_max
,
set_temp_max
);
static
DEVICE_ATTR
(
temp_hyst
,
S_IWUSR
|
S_IRUGO
,
show_temp_hyst
,
set_temp_hyst
);
static
DEVICE_ATTR
(
temp_input
,
S_IRUGO
,
show_temp_input
,
NULL
);
static
DEVICE_ATTR
(
temp_max
1
,
S_IWUSR
|
S_IRUGO
,
show_temp_max
,
set_temp_max
);
static
DEVICE_ATTR
(
temp_hyst
1
,
S_IWUSR
|
S_IRUGO
,
show_temp_hyst
,
set_temp_hyst
);
static
DEVICE_ATTR
(
temp_input
1
,
S_IRUGO
,
show_temp_input
,
NULL
);
static
int
lm75_attach_adapter
(
struct
i2c_adapter
*
adapter
)
{
...
...
@@ -197,9 +197,9 @@ static int lm75_detect(struct i2c_adapter *adapter, int address, int kind)
lm75_init_client
(
new_client
);
/* Register sysfs hooks */
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_max
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_hyst
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_input
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_max
1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_hyst
1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_input
1
);
return
0
;
...
...
drivers/i2c/chips/lm78.c
View file @
bef87257
...
...
@@ -369,10 +369,10 @@ static ssize_t set_temp_hyst(struct device *dev, const char *buf, size_t count)
return
count
;
}
static
DEVICE_ATTR
(
temp_input
,
S_IRUGO
,
show_temp
,
NULL
)
static
DEVICE_ATTR
(
temp_max
,
S_IRUGO
|
S_IWUSR
,
static
DEVICE_ATTR
(
temp_input
1
,
S_IRUGO
,
show_temp
,
NULL
)
static
DEVICE_ATTR
(
temp_max
1
,
S_IRUGO
|
S_IWUSR
,
show_temp_over
,
set_temp_over
)
static
DEVICE_ATTR
(
temp_hyst
,
S_IRUGO
|
S_IWUSR
,
static
DEVICE_ATTR
(
temp_hyst
1
,
S_IRUGO
|
S_IWUSR
,
show_temp_hyst
,
set_temp_hyst
)
/* 3 Fans */
...
...
@@ -678,9 +678,9 @@ int lm78_detect(struct i2c_adapter *adapter, int address, int kind)
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_in_input6
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_in_min6
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_in_max6
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_input
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_max
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_hyst
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_input
1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_max
1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_temp_hyst
1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_fan_input1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_fan_min1
);
device_create_file
(
&
new_client
->
dev
,
&
dev_attr_fan_div1
);
...
...
drivers/i2c/chips/lm85.c
View file @
bef87257
...
...
@@ -48,9 +48,6 @@ static unsigned int normal_isa_range[] = { I2C_CLIENT_ISA_END };
/* Insmod parameters */
SENSORS_INSMOD_4
(
lm85b
,
lm85c
,
adm1027
,
adt7463
);
/* Enable debug if true */
static
int
lm85debug
=
0
;
/* The LM85 registers */
#define LM85_REG_IN(nr) (0x20 + (nr))
...
...
@@ -802,19 +799,15 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
company
=
lm85_read_value
(
new_client
,
LM85_REG_COMPANY
);
verstep
=
lm85_read_value
(
new_client
,
LM85_REG_VERSTEP
);
if
(
lm85debug
)
{
printk
(
"lm85: Detecting device at %d,0x%02x with"
dev_dbg
(
&
adapter
->
dev
,
"Detecting device at %d,0x%02x with"
" COMPANY: 0x%02x and VERSTEP: 0x%02x
\n
"
,
i2c_adapter_id
(
new_client
->
adapter
),
new_client
->
addr
,
company
,
verstep
);
}
/* If auto-detecting, Determine the chip type. */
if
(
kind
<=
0
)
{
if
(
lm85debug
)
{
printk
(
"lm85: Autodetecting device at %d,0x%02x ...
\n
"
,
dev_dbg
(
&
adapter
->
dev
,
"Autodetecting device at %d,0x%02x ...
\n
"
,
i2c_adapter_id
(
adapter
),
address
);
}
if
(
company
==
LM85_COMPANY_NATIONAL
&&
verstep
==
LM85_VERSTEP_LM85C
)
{
kind
=
lm85c
;
...
...
@@ -823,8 +816,8 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
kind
=
lm85b
;
}
else
if
(
company
==
LM85_COMPANY_NATIONAL
&&
(
verstep
&
0xf0
)
==
LM85_VERSTEP_GENERIC
)
{
printk
(
"lm85:
Unrecgonized version/stepping 0x%02x"
" Defaulting to LM85.
\n
"
,
verstep
);
dev_err
(
&
adapter
->
dev
,
"
Unrecgonized version/stepping 0x%02x"
" Defaulting to LM85.
\n
"
,
verstep
);
kind
=
any_chip
;
}
else
if
(
company
==
LM85_COMPANY_ANALOG_DEV
&&
verstep
==
LM85_VERSTEP_ADM1027
)
{
...
...
@@ -834,21 +827,19 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
kind
=
adt7463
;
}
else
if
(
company
==
LM85_COMPANY_ANALOG_DEV
&&
(
verstep
&
0xf0
)
==
LM85_VERSTEP_GENERIC
)
{
printk
(
"lm85:
Unrecgonized version/stepping 0x%02x"
" Defaulting to ADM1027.
\n
"
,
verstep
);
dev_err
(
&
adapter
->
dev
,
"
Unrecgonized version/stepping 0x%02x"
" Defaulting to ADM1027.
\n
"
,
verstep
);
kind
=
adm1027
;
}
else
if
(
kind
==
0
&&
(
verstep
&
0xf0
)
==
0x60
)
{
printk
(
"lm85:
Generic LM85 Version 6 detected
\n
"
);
dev_err
(
&
adapter
->
dev
,
"
Generic LM85 Version 6 detected
\n
"
);
/* Leave kind as "any_chip" */
}
else
{
if
(
lm85debug
)
{
printk
(
"lm85: Autodetection failed
\n
"
);
}
dev_dbg
(
&
adapter
->
dev
,
"Autodetection failed
\n
"
);
/* Not an LM85 ... */
if
(
kind
==
0
)
{
/* User used force=x,y */
printk
(
"lm85:
Generic LM85 Version 6 not"
" found at %d,0x%02x. Try force_lm85c.
\n
"
,
i2c_adapter_id
(
adapter
),
address
);
dev_err
(
&
adapter
->
dev
,
"
Generic LM85 Version 6 not"
" found at %d,0x%02x. Try force_lm85c.
\n
"
,
i2c_adapter_id
(
adapter
),
address
);
}
err
=
0
;
goto
ERROR1
;
...
...
@@ -879,12 +870,10 @@ int lm85_detect(struct i2c_adapter *adapter, int address,
data
->
valid
=
0
;
init_MUTEX
(
&
data
->
update_lock
);
if
(
lm85debug
)
{
printk
(
"lm85: Assigning ID %d to %s at %d,0x%02x
\n
"
,
dev_dbg
(
&
adapter
->
dev
,
"Assigning ID %d to %s at %d,0x%02x
\n
"
,
new_client
->
id
,
new_client
->
name
,
i2c_adapter_id
(
new_client
->
adapter
),
new_client
->
addr
);
}
/* Tell the I2C layer a new client has arrived */
if
((
err
=
i2c_attach_client
(
new_client
)))
...
...
@@ -1021,31 +1010,24 @@ void lm85_init_client(struct i2c_client *client)
int
value
;
struct
lm85_data
*
data
=
i2c_get_clientdata
(
client
);
if
(
lm85debug
)
{
printk
(
"lm85(%d): Initializing device
\n
"
,
client
->
id
);
}
dev_dbg
(
&
client
->
dev
,
"Initializing device
\n
"
);
/* Warn if part was not "READY" */
value
=
lm85_read_value
(
client
,
LM85_REG_CONFIG
);
if
(
lm85debug
)
{
printk
(
"lm85(%d): LM85_REG_CONFIG is: 0x%02x
\n
"
,
client
->
id
,
value
);
}
dev_dbg
(
&
client
->
dev
,
"LM85_REG_CONFIG is: 0x%02x
\n
"
,
value
);
if
(
value
&
0x02
)
{
printk
(
"lm85(%d): Client (%d,0x%02x) config is locked.
\n
"
,
client
->
id
,
dev_err
(
&
client
->
dev
,
"Client (%d,0x%02x) config is locked.
\n
"
,
i2c_adapter_id
(
client
->
adapter
),
client
->
addr
);
};
if
(
!
(
value
&
0x04
)
)
{
printk
(
"lm85(%d): Client (%d,0x%02x) is not ready.
\n
"
,
client
->
id
,
dev_err
(
&
client
->
dev
,
"Client (%d,0x%02x) is not ready.
\n
"
,
i2c_adapter_id
(
client
->
adapter
),
client
->
addr
);
};
if
(
value
&
0x10
&&
(
data
->
type
==
adm1027
||
data
->
type
==
adt7463
)
)
{
printk
(
"lm85(%d):
Client (%d,0x%02x) VxI mode is set. "
dev_err
(
&
client
->
dev
,
"
Client (%d,0x%02x) VxI mode is set. "
"Please report this to the lm85 maintainer.
\n
"
,
client
->
id
,
i2c_adapter_id
(
client
->
adapter
),
client
->
addr
);
};
...
...
@@ -1061,11 +1043,8 @@ void lm85_init_client(struct i2c_client *client)
value
=
lm85_read_value
(
client
,
LM85_REG_CONFIG
);
/* Try to clear LOCK, Set START, save everything else */
value
=
(
value
&
~
0x02
)
|
0x01
;
if
(
lm85debug
)
{
printk
(
"lm85(%d): Setting CONFIG to: 0x%02x
\n
"
,
client
->
id
,
value
);
}
dev_dbg
(
&
client
->
dev
,
"Setting CONFIG to: 0x%02x
\n
"
,
value
);
lm85_write_value
(
client
,
LM85_REG_CONFIG
,
value
);
}
void
lm85_update_client
(
struct
i2c_client
*
client
)
...
...
@@ -1078,10 +1057,8 @@ void lm85_update_client(struct i2c_client *client)
if
(
!
data
->
valid
||
(
jiffies
-
data
->
last_reading
>
LM85_DATA_INTERVAL
)
)
{
/* Things that change quickly */
if
(
lm85debug
)
{
printk
(
"lm85(%d): Reading sensor values
\n
"
,
client
->
id
);
}
dev_dbg
(
&
client
->
dev
,
"Reading sensor values
\n
"
);
/* Have to read extended bits first to "freeze" the
* more significant bits that are read later.
*/
...
...
@@ -1125,10 +1102,8 @@ void lm85_update_client(struct i2c_client *client)
if
(
!
data
->
valid
||
(
jiffies
-
data
->
last_config
>
LM85_CONFIG_INTERVAL
)
)
{
/* Things that don't change often */
dev_dbg
(
&
client
->
dev
,
"Reading config values
\n
"
);
if
(
lm85debug
)
{
printk
(
"lm85(%d): Reading config values
\n
"
,
client
->
id
);
}
for
(
i
=
0
;
i
<=
4
;
++
i
)
{
data
->
in_min
[
i
]
=
lm85_read_value
(
client
,
LM85_REG_IN_MIN
(
i
));
...
...
@@ -1234,8 +1209,6 @@ static void __exit sm_lm85_exit(void)
MODULE_LICENSE
(
"GPL"
);
MODULE_AUTHOR
(
"Philip Pokorny <ppokorny@penguincomputing.com>, Margit Schubert-While <margitsw@t-online.de>"
);
MODULE_DESCRIPTION
(
"LM85-B, LM85-C driver"
);
MODULE_PARM
(
lm85debug
,
"i"
);
MODULE_PARM_DESC
(
lm85debug
,
"Enable debugging statements"
);
module_init
(
sm_lm85_init
);
module_exit
(
sm_lm85_exit
);
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