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
0c950d69
Commit
0c950d69
authored
Mar 22, 2003
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Plain Diff
Merge kroah.com:/home/linux/linux/BK/bleed-2.5
into kroah.com:/home/linux/linux/BK/i2c-2.5
parents
582a045d
1f5a2cd5
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
415 additions
and
424 deletions
+415
-424
drivers/acorn/char/i2c.c
drivers/acorn/char/i2c.c
+3
-1
drivers/i2c/busses/i2c-ali15x3.c
drivers/i2c/busses/i2c-ali15x3.c
+5
-3
drivers/i2c/busses/i2c-amd756.c
drivers/i2c/busses/i2c-amd756.c
+4
-2
drivers/i2c/busses/i2c-amd8111.c
drivers/i2c/busses/i2c-amd8111.c
+2
-2
drivers/i2c/busses/i2c-i801.c
drivers/i2c/busses/i2c-i801.c
+5
-3
drivers/i2c/busses/i2c-isa.c
drivers/i2c/busses/i2c-isa.c
+3
-1
drivers/i2c/busses/i2c-piix4.c
drivers/i2c/busses/i2c-piix4.c
+5
-3
drivers/i2c/chips/adm1021.c
drivers/i2c/chips/adm1021.c
+11
-10
drivers/i2c/chips/lm75.c
drivers/i2c/chips/lm75.c
+8
-6
drivers/i2c/i2c-algo-bit.c
drivers/i2c/i2c-algo-bit.c
+6
-7
drivers/i2c/i2c-algo-pcf.c
drivers/i2c/i2c-algo-pcf.c
+9
-10
drivers/i2c/i2c-core.c
drivers/i2c/i2c-core.c
+47
-48
drivers/i2c/i2c-dev.c
drivers/i2c/i2c-dev.c
+10
-11
drivers/i2c/i2c-elektor.c
drivers/i2c/i2c-elektor.c
+6
-4
drivers/i2c/i2c-elv.c
drivers/i2c/i2c-elv.c
+4
-2
drivers/i2c/i2c-philips-par.c
drivers/i2c/i2c-philips-par.c
+3
-1
drivers/i2c/i2c-proc.c
drivers/i2c/i2c-proc.c
+47
-133
drivers/i2c/i2c-velleman.c
drivers/i2c/i2c-velleman.c
+3
-1
drivers/i2c/scx200_acb.c
drivers/i2c/scx200_acb.c
+15
-17
drivers/ieee1394/pcilynx.c
drivers/ieee1394/pcilynx.c
+3
-1
drivers/media/video/adv7175.c
drivers/media/video/adv7175.c
+13
-9
drivers/media/video/bt819.c
drivers/media/video/bt819.c
+18
-15
drivers/media/video/bt856.c
drivers/media/video/bt856.c
+15
-12
drivers/media/video/bttv-if.c
drivers/media/video/bttv-if.c
+13
-9
drivers/media/video/msp3400.c
drivers/media/video/msp3400.c
+17
-15
drivers/media/video/saa5249.c
drivers/media/video/saa5249.c
+8
-5
drivers/media/video/saa7110.c
drivers/media/video/saa7110.c
+11
-8
drivers/media/video/saa7111.c
drivers/media/video/saa7111.c
+12
-9
drivers/media/video/saa7134/saa7134-i2c.c
drivers/media/video/saa7134/saa7134-i2c.c
+7
-3
drivers/media/video/saa7185.c
drivers/media/video/saa7185.c
+11
-8
drivers/media/video/tda7432.c
drivers/media/video/tda7432.c
+9
-7
drivers/media/video/tda9875.c
drivers/media/video/tda9875.c
+9
-7
drivers/media/video/tda9887.c
drivers/media/video/tda9887.c
+8
-6
drivers/media/video/tuner-3036.c
drivers/media/video/tuner-3036.c
+4
-2
drivers/media/video/tuner.c
drivers/media/video/tuner.c
+16
-13
drivers/media/video/tvaudio.c
drivers/media/video/tvaudio.c
+23
-21
include/linux/i2c.h
include/linux/i2c.h
+22
-9
No files found.
drivers/acorn/char/i2c.c
View file @
0c950d69
...
@@ -303,11 +303,13 @@ static int ioc_client_unreg(struct i2c_client *client)
...
@@ -303,11 +303,13 @@ static int ioc_client_unreg(struct i2c_client *client)
}
}
static
struct
i2c_adapter
ioc_ops
=
{
static
struct
i2c_adapter
ioc_ops
=
{
.
name
=
"IOC/IOMD"
,
.
id
=
I2C_HW_B_IOC
,
.
id
=
I2C_HW_B_IOC
,
.
algo_data
=
&
ioc_data
,
.
algo_data
=
&
ioc_data
,
.
client_register
=
ioc_client_reg
,
.
client_register
=
ioc_client_reg
,
.
client_unregister
=
ioc_client_unreg
.
client_unregister
=
ioc_client_unreg
.
dev
=
{
.
name
=
"IOC/IOMD"
,
},
};
};
static
int
__init
i2c_ioc_init
(
void
)
static
int
__init
i2c_ioc_init
(
void
)
...
...
drivers/i2c/busses/i2c-ali15x3.c
View file @
0c950d69
...
@@ -474,9 +474,11 @@ static struct i2c_algorithm smbus_algorithm = {
...
@@ -474,9 +474,11 @@ static struct i2c_algorithm smbus_algorithm = {
static
struct
i2c_adapter
ali15x3_adapter
=
{
static
struct
i2c_adapter
ali15x3_adapter
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"unset"
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_ALI15X3
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_ALI15X3
,
.
algo
=
&
smbus_algorithm
,
.
algo
=
&
smbus_algorithm
,
.
dev
=
{
.
name
=
"unset"
,
},
};
};
static
struct
pci_device_id
ali15x3_ids
[]
__devinitdata
=
{
static
struct
pci_device_id
ali15x3_ids
[]
__devinitdata
=
{
...
@@ -500,8 +502,8 @@ static int __devinit ali15x3_probe(struct pci_dev *dev, const struct pci_device_
...
@@ -500,8 +502,8 @@ static int __devinit ali15x3_probe(struct pci_dev *dev, const struct pci_device_
/* set up the driverfs linkage to our parent device */
/* set up the driverfs linkage to our parent device */
ali15x3_adapter
.
dev
.
parent
=
&
dev
->
dev
;
ali15x3_adapter
.
dev
.
parent
=
&
dev
->
dev
;
s
printf
(
ali15x3_adapter
.
name
,
"SMBus ALI15X3 adapter at %04x"
,
s
nprintf
(
ali15x3_adapter
.
dev
.
name
,
DEVICE_NAME_SIZE
,
ali15x3_smba
);
"SMBus ALI15X3 adapter at %04x"
,
ali15x3_smba
);
return
i2c_add_adapter
(
&
ali15x3_adapter
);
return
i2c_add_adapter
(
&
ali15x3_adapter
);
}
}
...
...
drivers/i2c/busses/i2c-amd756.c
View file @
0c950d69
...
@@ -312,9 +312,11 @@ static struct i2c_algorithm smbus_algorithm = {
...
@@ -312,9 +312,11 @@ static struct i2c_algorithm smbus_algorithm = {
static
struct
i2c_adapter
amd756_adapter
=
{
static
struct
i2c_adapter
amd756_adapter
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"unset"
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_AMD756
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_AMD756
,
.
algo
=
&
smbus_algorithm
,
.
algo
=
&
smbus_algorithm
,
.
dev
=
{
.
name
=
"unset"
,
},
};
};
enum
chiptype
{
AMD756
,
AMD766
,
AMD768
,
NFORCE
};
enum
chiptype
{
AMD756
,
AMD766
,
AMD768
,
NFORCE
};
...
@@ -376,7 +378,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev,
...
@@ -376,7 +378,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev,
/* set up the driverfs linkage to our parent device */
/* set up the driverfs linkage to our parent device */
amd756_adapter
.
dev
.
parent
=
&
pdev
->
dev
;
amd756_adapter
.
dev
.
parent
=
&
pdev
->
dev
;
s
printf
(
amd756_adapter
.
name
,
s
nprintf
(
amd756_adapter
.
dev
.
name
,
DEVICE_NAME_SIZE
,
"SMBus AMD75x adapter at %04x"
,
amd756_ioport
);
"SMBus AMD75x adapter at %04x"
,
amd756_ioport
);
error
=
i2c_add_adapter
(
&
amd756_adapter
);
error
=
i2c_add_adapter
(
&
amd756_adapter
);
...
...
drivers/i2c/busses/i2c-amd8111.c
View file @
0c950d69
...
@@ -357,8 +357,8 @@ static int __devinit amd8111_probe(struct pci_dev *dev, const struct pci_device_
...
@@ -357,8 +357,8 @@ static int __devinit amd8111_probe(struct pci_dev *dev, const struct pci_device_
goto
out_kfree
;
goto
out_kfree
;
smbus
->
adapter
.
owner
=
THIS_MODULE
;
smbus
->
adapter
.
owner
=
THIS_MODULE
;
s
printf
(
smbus
->
adapter
.
name
,
s
nprintf
(
smbus
->
adapter
.
dev
.
name
,
DEVICE_NAME_SIZE
,
"SMBus2 AMD8111 adapter at %04x"
,
smbus
->
base
);
"SMBus2 AMD8111 adapter at %04x"
,
smbus
->
base
);
smbus
->
adapter
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_AMD8111
;
smbus
->
adapter
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_AMD8111
;
smbus
->
adapter
.
algo
=
&
smbus_algorithm
;
smbus
->
adapter
.
algo
=
&
smbus_algorithm
;
smbus
->
adapter
.
algo_data
=
smbus
;
smbus
->
adapter
.
algo_data
=
smbus
;
...
...
drivers/i2c/busses/i2c-i801.c
View file @
0c950d69
...
@@ -546,9 +546,11 @@ static struct i2c_algorithm smbus_algorithm = {
...
@@ -546,9 +546,11 @@ static struct i2c_algorithm smbus_algorithm = {
static
struct
i2c_adapter
i801_adapter
=
{
static
struct
i2c_adapter
i801_adapter
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"unset"
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_I801
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_I801
,
.
algo
=
&
smbus_algorithm
,
.
algo
=
&
smbus_algorithm
,
.
dev
=
{
.
name
=
"unset"
,
},
};
};
static
struct
pci_device_id
i801_ids
[]
__devinitdata
=
{
static
struct
pci_device_id
i801_ids
[]
__devinitdata
=
{
...
@@ -597,8 +599,8 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id
...
@@ -597,8 +599,8 @@ static int __devinit i801_probe(struct pci_dev *dev, const struct pci_device_id
/* set up the driverfs linkage to our parent device */
/* set up the driverfs linkage to our parent device */
i801_adapter
.
dev
.
parent
=
&
dev
->
dev
;
i801_adapter
.
dev
.
parent
=
&
dev
->
dev
;
s
printf
(
i801_adapter
.
name
,
"SMBus I801 adapter at %04x"
,
s
nprintf
(
i801_adapter
.
dev
.
name
,
DEVICE_NAME_SIZE
,
i801_smba
);
"SMBus I801 adapter at %04x"
,
i801_smba
);
return
i2c_add_adapter
(
&
i801_adapter
);
return
i2c_add_adapter
(
&
i801_adapter
);
}
}
...
...
drivers/i2c/busses/i2c-isa.c
View file @
0c950d69
...
@@ -39,9 +39,11 @@ static struct i2c_algorithm isa_algorithm = {
...
@@ -39,9 +39,11 @@ static struct i2c_algorithm isa_algorithm = {
/* There can only be one... */
/* There can only be one... */
static
struct
i2c_adapter
isa_adapter
=
{
static
struct
i2c_adapter
isa_adapter
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"ISA main adapter"
,
.
id
=
I2C_ALGO_ISA
|
I2C_HW_ISA
,
.
id
=
I2C_ALGO_ISA
|
I2C_HW_ISA
,
.
algo
=
&
isa_algorithm
,
.
algo
=
&
isa_algorithm
,
.
dev
=
{
.
name
=
"ISA main adapter"
,
},
};
};
static
int
__init
i2c_isa_init
(
void
)
static
int
__init
i2c_isa_init
(
void
)
...
...
drivers/i2c/busses/i2c-piix4.c
View file @
0c950d69
...
@@ -394,9 +394,11 @@ static struct i2c_algorithm smbus_algorithm = {
...
@@ -394,9 +394,11 @@ static struct i2c_algorithm smbus_algorithm = {
static
struct
i2c_adapter
piix4_adapter
=
{
static
struct
i2c_adapter
piix4_adapter
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"unset"
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_PIIX4
,
.
id
=
I2C_ALGO_SMBUS
|
I2C_HW_SMBUS_PIIX4
,
.
algo
=
&
smbus_algorithm
,
.
algo
=
&
smbus_algorithm
,
.
dev
=
{
.
name
=
"unset"
,
},
};
};
static
struct
pci_device_id
piix4_ids
[]
__devinitdata
=
{
static
struct
pci_device_id
piix4_ids
[]
__devinitdata
=
{
...
@@ -449,8 +451,8 @@ static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id
...
@@ -449,8 +451,8 @@ static int __devinit piix4_probe(struct pci_dev *dev, const struct pci_device_id
/* set up the driverfs linkage to our parent device */
/* set up the driverfs linkage to our parent device */
piix4_adapter
.
dev
.
parent
=
&
dev
->
dev
;
piix4_adapter
.
dev
.
parent
=
&
dev
->
dev
;
s
printf
(
piix4_adapter
.
name
,
"SMBus PIIX4 adapter at %04x"
,
s
nprintf
(
piix4_adapter
.
dev
.
name
,
DEVICE_NAME_SIZE
,
piix4_smba
);
"SMBus PIIX4 adapter at %04x"
,
piix4_smba
);
retval
=
i2c_add_adapter
(
&
piix4_adapter
);
retval
=
i2c_add_adapter
(
&
piix4_adapter
);
...
...
drivers/i2c/chips/adm1021.c
View file @
0c950d69
...
@@ -144,7 +144,7 @@ static int read_only = 0;
...
@@ -144,7 +144,7 @@ static int read_only = 0;
/* This is the driver that will be inserted */
/* This is the driver that will be inserted */
static
struct
i2c_driver
adm1021_driver
=
{
static
struct
i2c_driver
adm1021_driver
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"ADM1021
, MAX1617 sensor driver
"
,
.
name
=
"ADM1021
-MAX1617
"
,
.
id
=
I2C_DRIVERID_ADM1021
,
.
id
=
I2C_DRIVERID_ADM1021
,
.
flags
=
I2C_DF_NOTIFY
,
.
flags
=
I2C_DF_NOTIFY
,
.
attach_adapter
=
adm1021_attach_adapter
,
.
attach_adapter
=
adm1021_attach_adapter
,
...
@@ -221,10 +221,12 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address,
...
@@ -221,10 +221,12 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address,
err
=
-
ENOMEM
;
err
=
-
ENOMEM
;
goto
error0
;
goto
error0
;
}
}
memset
(
new_client
,
0x00
,
sizeof
(
struct
i2c_client
)
+
sizeof
(
struct
adm1021_data
));
data
=
(
struct
adm1021_data
*
)
(
new_client
+
1
);
data
=
(
struct
adm1021_data
*
)
(
new_client
+
1
);
i2c_set_clientdata
(
new_client
,
data
);
new_client
->
addr
=
address
;
new_client
->
addr
=
address
;
new_client
->
data
=
data
;
new_client
->
adapter
=
adapter
;
new_client
->
adapter
=
adapter
;
new_client
->
driver
=
&
adm1021_driver
;
new_client
->
driver
=
&
adm1021_driver
;
new_client
->
flags
=
0
;
new_client
->
flags
=
0
;
...
@@ -299,7 +301,7 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address,
...
@@ -299,7 +301,7 @@ static int adm1021_detect(struct i2c_adapter *adapter, int address,
}
}
/* Fill in the remaining client fields and put it into the global list */
/* Fill in the remaining client fields and put it into the global list */
str
cpy
(
new_client
->
name
,
client_name
);
str
ncpy
(
new_client
->
dev
.
name
,
client_name
,
DEVICE_NAME_SIZE
);
data
->
type
=
kind
;
data
->
type
=
kind
;
new_client
->
id
=
adm1021_id
++
;
new_client
->
id
=
adm1021_id
++
;
...
@@ -354,8 +356,7 @@ static int adm1021_detach_client(struct i2c_client *client)
...
@@ -354,8 +356,7 @@ static int adm1021_detach_client(struct i2c_client *client)
int
err
;
int
err
;
i2c_deregister_entry
(((
struct
adm1021_data
*
)
(
client
->
data
))
->
i2c_deregister_entry
(((
struct
adm1021_data
*
)
(
i2c_get_clientdata
(
client
)))
->
sysctl_id
);
sysctl_id
);
if
((
err
=
i2c_detach_client
(
client
)))
{
if
((
err
=
i2c_detach_client
(
client
)))
{
printk
printk
...
@@ -384,7 +385,7 @@ static int adm1021_write_value(struct i2c_client *client, u8 reg, u16 value)
...
@@ -384,7 +385,7 @@ static int adm1021_write_value(struct i2c_client *client, u8 reg, u16 value)
static
void
adm1021_update_client
(
struct
i2c_client
*
client
)
static
void
adm1021_update_client
(
struct
i2c_client
*
client
)
{
{
struct
adm1021_data
*
data
=
client
->
data
;
struct
adm1021_data
*
data
=
i2c_get_clientdata
(
client
)
;
down
(
&
data
->
update_lock
);
down
(
&
data
->
update_lock
);
...
@@ -435,7 +436,7 @@ static void adm1021_update_client(struct i2c_client *client)
...
@@ -435,7 +436,7 @@ static void adm1021_update_client(struct i2c_client *client)
static
void
adm1021_temp
(
struct
i2c_client
*
client
,
int
operation
,
static
void
adm1021_temp
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
{
{
struct
adm1021_data
*
data
=
client
->
data
;
struct
adm1021_data
*
data
=
i2c_get_clientdata
(
client
)
;
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
*
nrels_mag
=
0
;
*
nrels_mag
=
0
;
...
@@ -462,7 +463,7 @@ static void adm1021_temp(struct i2c_client *client, int operation,
...
@@ -462,7 +463,7 @@ static void adm1021_temp(struct i2c_client *client, int operation,
static
void
adm1021_remote_temp
(
struct
i2c_client
*
client
,
int
operation
,
static
void
adm1021_remote_temp
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
{
{
struct
adm1021_data
*
data
=
client
->
data
;
struct
adm1021_data
*
data
=
i2c_get_clientdata
(
client
)
;
int
prec
=
0
;
int
prec
=
0
;
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
...
@@ -535,7 +536,7 @@ static void adm1021_remote_temp(struct i2c_client *client, int operation,
...
@@ -535,7 +536,7 @@ static void adm1021_remote_temp(struct i2c_client *client, int operation,
static
void
adm1021_die_code
(
struct
i2c_client
*
client
,
int
operation
,
static
void
adm1021_die_code
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
{
{
struct
adm1021_data
*
data
=
client
->
data
;
struct
adm1021_data
*
data
=
i2c_get_clientdata
(
client
)
;
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
*
nrels_mag
=
0
;
*
nrels_mag
=
0
;
...
@@ -551,7 +552,7 @@ static void adm1021_die_code(struct i2c_client *client, int operation,
...
@@ -551,7 +552,7 @@ static void adm1021_die_code(struct i2c_client *client, int operation,
static
void
adm1021_alarms
(
struct
i2c_client
*
client
,
int
operation
,
static
void
adm1021_alarms
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
{
{
struct
adm1021_data
*
data
=
client
->
data
;
struct
adm1021_data
*
data
=
i2c_get_clientdata
(
client
)
;
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
*
nrels_mag
=
0
;
*
nrels_mag
=
0
;
else
if
(
operation
==
SENSORS_PROC_REAL_READ
)
{
else
if
(
operation
==
SENSORS_PROC_REAL_READ
)
{
...
...
drivers/i2c/chips/lm75.c
View file @
0c950d69
...
@@ -82,7 +82,7 @@ static void lm75_update_client(struct i2c_client *client);
...
@@ -82,7 +82,7 @@ static void lm75_update_client(struct i2c_client *client);
/* This is the driver that will be inserted */
/* This is the driver that will be inserted */
static
struct
i2c_driver
lm75_driver
=
{
static
struct
i2c_driver
lm75_driver
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"LM75 sensor
chip driver
"
,
.
name
=
"LM75 sensor"
,
.
id
=
I2C_DRIVERID_LM75
,
.
id
=
I2C_DRIVERID_LM75
,
.
flags
=
I2C_DF_NOTIFY
,
.
flags
=
I2C_DF_NOTIFY
,
.
attach_adapter
=
lm75_attach_adapter
,
.
attach_adapter
=
lm75_attach_adapter
,
...
@@ -140,10 +140,12 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
...
@@ -140,10 +140,12 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
err
=
-
ENOMEM
;
err
=
-
ENOMEM
;
goto
error0
;
goto
error0
;
}
}
memset
(
new_client
,
0x00
,
sizeof
(
struct
i2c_client
)
+
sizeof
(
struct
lm75_data
));
data
=
(
struct
lm75_data
*
)
(
new_client
+
1
);
data
=
(
struct
lm75_data
*
)
(
new_client
+
1
);
i2c_set_clientdata
(
new_client
,
data
);
new_client
->
addr
=
address
;
new_client
->
addr
=
address
;
new_client
->
data
=
data
;
new_client
->
adapter
=
adapter
;
new_client
->
adapter
=
adapter
;
new_client
->
driver
=
&
lm75_driver
;
new_client
->
driver
=
&
lm75_driver
;
new_client
->
flags
=
0
;
new_client
->
flags
=
0
;
...
@@ -180,7 +182,7 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
...
@@ -180,7 +182,7 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
}
}
/* Fill in the remaining client fields and put it into the global list */
/* Fill in the remaining client fields and put it into the global list */
str
cpy
(
new_client
->
name
,
client_name
);
str
ncpy
(
new_client
->
dev
.
name
,
client_name
,
DEVICE_NAME_SIZE
);
new_client
->
id
=
lm75_id
++
;
new_client
->
id
=
lm75_id
++
;
data
->
valid
=
0
;
data
->
valid
=
0
;
...
@@ -215,7 +217,7 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
...
@@ -215,7 +217,7 @@ static int lm75_detect(struct i2c_adapter *adapter, int address,
static
int
lm75_detach_client
(
struct
i2c_client
*
client
)
static
int
lm75_detach_client
(
struct
i2c_client
*
client
)
{
{
struct
lm75_data
*
data
=
client
->
data
;
struct
lm75_data
*
data
=
i2c_get_clientdata
(
client
)
;
i2c_deregister_entry
(
data
->
sysctl_id
);
i2c_deregister_entry
(
data
->
sysctl_id
);
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
...
@@ -263,7 +265,7 @@ static void lm75_init_client(struct i2c_client *client)
...
@@ -263,7 +265,7 @@ static void lm75_init_client(struct i2c_client *client)
static
void
lm75_update_client
(
struct
i2c_client
*
client
)
static
void
lm75_update_client
(
struct
i2c_client
*
client
)
{
{
struct
lm75_data
*
data
=
client
->
data
;
struct
lm75_data
*
data
=
i2c_get_clientdata
(
client
)
;
down
(
&
data
->
update_lock
);
down
(
&
data
->
update_lock
);
...
@@ -286,7 +288,7 @@ static void lm75_update_client(struct i2c_client *client)
...
@@ -286,7 +288,7 @@ static void lm75_update_client(struct i2c_client *client)
static
void
lm75_temp
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
static
void
lm75_temp
(
struct
i2c_client
*
client
,
int
operation
,
int
ctl_name
,
int
*
nrels_mag
,
long
*
results
)
int
*
nrels_mag
,
long
*
results
)
{
{
struct
lm75_data
*
data
=
client
->
data
;
struct
lm75_data
*
data
=
i2c_get_clientdata
(
client
)
;
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
if
(
operation
==
SENSORS_PROC_REAL_INFO
)
*
nrels_mag
=
1
;
*
nrels_mag
=
1
;
else
if
(
operation
==
SENSORS_PROC_REAL_READ
)
{
else
if
(
operation
==
SENSORS_PROC_REAL_READ
)
{
...
...
drivers/i2c/i2c-algo-bit.c
View file @
0c950d69
...
@@ -23,6 +23,8 @@
...
@@ -23,6 +23,8 @@
/* $Id: i2c-algo-bit.c,v 1.44 2003/01/21 08:08:16 kmalkki Exp $ */
/* $Id: i2c-algo-bit.c,v 1.44 2003/01/21 08:08:16 kmalkki Exp $ */
/* #define DEBUG 1 */
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/delay.h>
...
@@ -338,16 +340,14 @@ static int sendbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
...
@@ -338,16 +340,14 @@ static int sendbytes(struct i2c_adapter *i2c_adap, struct i2c_msg *msg)
while
(
count
>
0
)
{
while
(
count
>
0
)
{
c
=
*
temp
;
c
=
*
temp
;
DEB2
(
printk
(
KERN_DEBUG
"i2c-algo-bit.o: %s sendbytes: writing %2.2X
\n
"
,
DEB2
(
dev_dbg
(
&
i2c_adap
->
dev
,
"sendbytes: writing %2.2X
\n
"
,
c
&
0xff
));
i2c_adap
->
name
,
c
&
0xff
));
retval
=
i2c_outb
(
i2c_adap
,
c
);
retval
=
i2c_outb
(
i2c_adap
,
c
);
if
((
retval
>
0
)
||
(
nak_ok
&&
(
retval
==
0
)))
{
/* ok or ignored NAK */
if
((
retval
>
0
)
||
(
nak_ok
&&
(
retval
==
0
)))
{
/* ok or ignored NAK */
count
--
;
count
--
;
temp
++
;
temp
++
;
wrcount
++
;
wrcount
++
;
}
else
{
/* arbitration or no acknowledge */
}
else
{
/* arbitration or no acknowledge */
printk
(
KERN_ERR
"i2c-algo-bit.o: %s sendbytes: error - bailout.
\n
"
,
dev_err
(
&
i2c_adap
->
dev
,
"sendbytes: error - bailout.
\n
"
);
i2c_adap
->
name
);
i2c_stop
(
adap
);
i2c_stop
(
adap
);
return
(
retval
<
0
)
?
retval
:
-
EFAULT
;
return
(
retval
<
0
)
?
retval
:
-
EFAULT
;
/* got a better one ?? */
/* got a better one ?? */
...
@@ -527,13 +527,12 @@ int i2c_bit_add_bus(struct i2c_adapter *adap)
...
@@ -527,13 +527,12 @@ int i2c_bit_add_bus(struct i2c_adapter *adap)
struct
i2c_algo_bit_data
*
bit_adap
=
adap
->
algo_data
;
struct
i2c_algo_bit_data
*
bit_adap
=
adap
->
algo_data
;
if
(
bit_test
)
{
if
(
bit_test
)
{
int
ret
=
test_bus
(
bit_adap
,
adap
->
name
);
int
ret
=
test_bus
(
bit_adap
,
adap
->
dev
.
name
);
if
(
ret
<
0
)
if
(
ret
<
0
)
return
-
ENODEV
;
return
-
ENODEV
;
}
}
DEB2
(
printk
(
KERN_DEBUG
"i2c-algo-bit.o: hw routines for %s registered.
\n
"
,
DEB2
(
dev_dbg
(
&
adap
->
dev
,
"hw routines registered.
\n
"
));
adap
->
name
));
/* register new adapter to i2c module... */
/* register new adapter to i2c module... */
...
...
drivers/i2c/i2c-algo-pcf.c
View file @
0c950d69
...
@@ -27,6 +27,8 @@
...
@@ -27,6 +27,8 @@
messages, proper stop/repstart signaling during receive,
messages, proper stop/repstart signaling during receive,
added detect code */
added detect code */
/* #define DEBUG 1 */
/* to pick up dev_dbg calls */
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/delay.h>
...
@@ -222,21 +224,19 @@ static int pcf_sendbytes(struct i2c_adapter *i2c_adap, const char *buf,
...
@@ -222,21 +224,19 @@ static int pcf_sendbytes(struct i2c_adapter *i2c_adap, const char *buf,
int
wrcount
,
status
,
timeout
;
int
wrcount
,
status
,
timeout
;
for
(
wrcount
=
0
;
wrcount
<
count
;
++
wrcount
)
{
for
(
wrcount
=
0
;
wrcount
<
count
;
++
wrcount
)
{
DEB2
(
printk
(
KERN_DEBUG
"i2c-algo-pcf.o: %s
i2c_write: writing %2.2X
\n
"
,
DEB2
(
dev_dbg
(
&
i2c_adap
->
dev
,
"
i2c_write: writing %2.2X
\n
"
,
i2c_adap
->
name
,
buf
[
wrcount
]
&
0xff
));
buf
[
wrcount
]
&
0xff
));
i2c_outb
(
adap
,
buf
[
wrcount
]);
i2c_outb
(
adap
,
buf
[
wrcount
]);
timeout
=
wait_for_pin
(
adap
,
&
status
);
timeout
=
wait_for_pin
(
adap
,
&
status
);
if
(
timeout
)
{
if
(
timeout
)
{
i2c_stop
(
adap
);
i2c_stop
(
adap
);
printk
(
KERN_ERR
"i2c-algo-pcf.o: %s i2c_write: "
dev_err
(
&
i2c_adap
->
dev
,
"i2c_write: error - timeout.
\n
"
);
"error - timeout.
\n
"
,
i2c_adap
->
name
);
return
-
EREMOTEIO
;
/* got a better one ?? */
return
-
EREMOTEIO
;
/* got a better one ?? */
}
}
#ifndef STUB_I2C
#ifndef STUB_I2C
if
(
status
&
I2C_PCF_LRB
)
{
if
(
status
&
I2C_PCF_LRB
)
{
i2c_stop
(
adap
);
i2c_stop
(
adap
);
printk
(
KERN_ERR
"i2c-algo-pcf.o: %s i2c_write: "
dev_err
(
&
i2c_adap
->
dev
,
"i2c_write: error - no ack.
\n
"
);
"error - no ack.
\n
"
,
i2c_adap
->
name
);
return
-
EREMOTEIO
;
/* got a better one ?? */
return
-
EREMOTEIO
;
/* got a better one ?? */
}
}
#endif
#endif
...
@@ -263,14 +263,14 @@ static int pcf_readbytes(struct i2c_adapter *i2c_adap, char *buf,
...
@@ -263,14 +263,14 @@ static int pcf_readbytes(struct i2c_adapter *i2c_adap, char *buf,
if
(
wait_for_pin
(
adap
,
&
status
))
{
if
(
wait_for_pin
(
adap
,
&
status
))
{
i2c_stop
(
adap
);
i2c_stop
(
adap
);
printk
(
KERN_ERR
"i2c-algo-pcf.o:
pcf_readbytes timed out.
\n
"
);
dev_err
(
&
i2c_adap
->
dev
,
"
pcf_readbytes timed out.
\n
"
);
return
(
-
1
);
return
(
-
1
);
}
}
#ifndef STUB_I2C
#ifndef STUB_I2C
if
((
status
&
I2C_PCF_LRB
)
&&
(
i
!=
count
))
{
if
((
status
&
I2C_PCF_LRB
)
&&
(
i
!=
count
))
{
i2c_stop
(
adap
);
i2c_stop
(
adap
);
printk
(
KERN_ERR
"i2c-algo-pcf.o:
i2c_read: i2c_inb, No ack.
\n
"
);
dev_err
(
&
i2c_adap
->
dev
,
"
i2c_read: i2c_inb, No ack.
\n
"
);
return
(
-
1
);
return
(
-
1
);
}
}
#endif
#endif
...
@@ -445,8 +445,7 @@ int i2c_pcf_add_bus(struct i2c_adapter *adap)
...
@@ -445,8 +445,7 @@ int i2c_pcf_add_bus(struct i2c_adapter *adap)
struct
i2c_algo_pcf_data
*
pcf_adap
=
adap
->
algo_data
;
struct
i2c_algo_pcf_data
*
pcf_adap
=
adap
->
algo_data
;
int
rval
;
int
rval
;
DEB2
(
printk
(
KERN_DEBUG
"i2c-algo-pcf.o: hw routines for %s registered.
\n
"
,
DEB2
(
dev_dbg
(
&
adap
->
dev
,
"hw routines registered.
\n
"
));
adap
->
name
));
/* register new adapter to i2c module... */
/* register new adapter to i2c module... */
...
...
drivers/i2c/i2c-core.c
View file @
0c950d69
...
@@ -23,6 +23,8 @@
...
@@ -23,6 +23,8 @@
/* $Id: i2c-core.c,v 1.95 2003/01/22 05:25:08 kmalkki Exp $ */
/* $Id: i2c-core.c,v 1.95 2003/01/22 05:25:08 kmalkki Exp $ */
/* #define DEBUG 1 */
/* needed to pick up the dev_dbg() calls */
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/errno.h>
...
@@ -82,9 +84,8 @@ int i2c_add_adapter(struct i2c_adapter *adap)
...
@@ -82,9 +84,8 @@ int i2c_add_adapter(struct i2c_adapter *adap)
if
(
NULL
==
adapters
[
i
])
if
(
NULL
==
adapters
[
i
])
break
;
break
;
if
(
I2C_ADAP_MAX
==
i
)
{
if
(
I2C_ADAP_MAX
==
i
)
{
printk
(
KERN_WARNING
dev_warn
(
&
adap
->
dev
,
" i2c-core.o: register_adapter(%s) - enlarge I2C_ADAP_MAX.
\n
"
,
"register_adapter - enlarge I2C_ADAP_MAX.
\n
"
);
adap
->
name
);
res
=
-
ENOMEM
;
res
=
-
ENOMEM
;
goto
out_unlock
;
goto
out_unlock
;
}
}
...
@@ -105,7 +106,6 @@ int i2c_add_adapter(struct i2c_adapter *adap)
...
@@ -105,7 +106,6 @@ int i2c_add_adapter(struct i2c_adapter *adap)
if
(
adap
->
dev
.
parent
==
NULL
)
if
(
adap
->
dev
.
parent
==
NULL
)
adap
->
dev
.
parent
=
&
legacy_bus
;
adap
->
dev
.
parent
=
&
legacy_bus
;
sprintf
(
adap
->
dev
.
bus_id
,
"i2c-%d"
,
i
);
sprintf
(
adap
->
dev
.
bus_id
,
"i2c-%d"
,
i
);
strcpy
(
adap
->
dev
.
name
,
"i2c controller"
);
device_register
(
&
adap
->
dev
);
device_register
(
&
adap
->
dev
);
/* inform drivers of new adapters */
/* inform drivers of new adapters */
...
@@ -116,8 +116,7 @@ int i2c_add_adapter(struct i2c_adapter *adap)
...
@@ -116,8 +116,7 @@ int i2c_add_adapter(struct i2c_adapter *adap)
drivers
[
j
]
->
attach_adapter
(
adap
);
drivers
[
j
]
->
attach_adapter
(
adap
);
up
(
&
core_lists
);
up
(
&
core_lists
);
DEB
(
printk
(
KERN_DEBUG
"i2c-core.o: adapter %s registered as adapter %d.
\n
"
,
DEB
(
dev_dbg
(
&
adap
->
dev
,
"registered as adapter %d.
\n
"
,
i
));
adap
->
name
,
i
));
out_unlock:
out_unlock:
up
(
&
core_lists
);
up
(
&
core_lists
);
...
@@ -134,8 +133,7 @@ int i2c_del_adapter(struct i2c_adapter *adap)
...
@@ -134,8 +133,7 @@ int i2c_del_adapter(struct i2c_adapter *adap)
if
(
adap
==
adapters
[
i
])
if
(
adap
==
adapters
[
i
])
break
;
break
;
if
(
I2C_ADAP_MAX
==
i
)
{
if
(
I2C_ADAP_MAX
==
i
)
{
printk
(
KERN_WARNING
"i2c-core.o: unregister_adapter adap [%s] not found.
\n
"
,
dev_warn
(
&
adap
->
dev
,
"unregister_adapter adap not found.
\n
"
);
adap
->
name
);
res
=
-
ENODEV
;
res
=
-
ENODEV
;
goto
out_unlock
;
goto
out_unlock
;
}
}
...
@@ -148,9 +146,9 @@ int i2c_del_adapter(struct i2c_adapter *adap)
...
@@ -148,9 +146,9 @@ int i2c_del_adapter(struct i2c_adapter *adap)
for
(
j
=
0
;
j
<
I2C_DRIVER_MAX
;
j
++
)
for
(
j
=
0
;
j
<
I2C_DRIVER_MAX
;
j
++
)
if
(
drivers
[
j
]
&&
(
drivers
[
j
]
->
flags
&
I2C_DF_DUMMY
))
if
(
drivers
[
j
]
&&
(
drivers
[
j
]
->
flags
&
I2C_DF_DUMMY
))
if
((
res
=
drivers
[
j
]
->
attach_adapter
(
adap
)))
{
if
((
res
=
drivers
[
j
]
->
attach_adapter
(
adap
)))
{
printk
(
KERN_WARNING
"i2c-core.o: can't detach adapter %s
"
dev_warn
(
&
adap
->
dev
,
"can't detach adapter
"
"while detaching driver %s: driver not "
"while detaching driver %s: driver not "
"detached!"
,
adap
->
name
,
drivers
[
j
]
->
name
);
"detached!"
,
drivers
[
j
]
->
name
);
goto
out_unlock
;
goto
out_unlock
;
}
}
...
@@ -164,10 +162,10 @@ int i2c_del_adapter(struct i2c_adapter *adap)
...
@@ -164,10 +162,10 @@ int i2c_del_adapter(struct i2c_adapter *adap)
* must be deleted, as this would cause invalid states.
* must be deleted, as this would cause invalid states.
*/
*/
if
((
res
=
client
->
driver
->
detach_client
(
client
)))
{
if
((
res
=
client
->
driver
->
detach_client
(
client
)))
{
printk
(
KERN_ERR
"i2c-core.o: adapter %s
not "
dev_err
(
&
adap
->
dev
,
"adapter
not "
"unregistered, because client at "
"unregistered, because client at "
"address %02x can't be detached. "
,
"address %02x can't be detached. "
,
adap
->
name
,
client
->
addr
);
client
->
addr
);
goto
out_unlock
;
goto
out_unlock
;
}
}
}
}
...
@@ -180,7 +178,7 @@ int i2c_del_adapter(struct i2c_adapter *adap)
...
@@ -180,7 +178,7 @@ int i2c_del_adapter(struct i2c_adapter *adap)
adapters
[
i
]
=
NULL
;
adapters
[
i
]
=
NULL
;
DEB
(
printk
(
KERN_DEBUG
"i2c-core.o: adapter unregistered: %s
\n
"
,
adap
->
name
));
DEB
(
dev_dbg
(
&
adap
->
dev
,
"adapter unregistered
\n
"
));
out_unlock:
out_unlock:
up
(
&
core_lists
);
up
(
&
core_lists
);
...
@@ -272,8 +270,7 @@ int i2c_del_driver(struct i2c_driver *driver)
...
@@ -272,8 +270,7 @@ int i2c_del_driver(struct i2c_driver *driver)
struct
i2c_adapter
*
adap
=
adapters
[
k
];
struct
i2c_adapter
*
adap
=
adapters
[
k
];
if
(
adap
==
NULL
)
/* skip empty entries. */
if
(
adap
==
NULL
)
/* skip empty entries. */
continue
;
continue
;
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: examining adapter %s:
\n
"
,
DEB2
(
dev_dbg
(
&
adap
->
dev
,
"examining adapter
\n
"
));
adap
->
name
));
if
(
driver
->
flags
&
I2C_DF_DUMMY
)
{
if
(
driver
->
flags
&
I2C_DF_DUMMY
)
{
/* DUMMY drivers do not register their clients, so we have to
/* DUMMY drivers do not register their clients, so we have to
* use a trick here: we call driver->attach_adapter to
* use a trick here: we call driver->attach_adapter to
...
@@ -281,11 +278,10 @@ int i2c_del_driver(struct i2c_driver *driver)
...
@@ -281,11 +278,10 @@ int i2c_del_driver(struct i2c_driver *driver)
* this or hell will break loose...
* this or hell will break loose...
*/
*/
if
((
res
=
driver
->
attach_adapter
(
adap
)))
{
if
((
res
=
driver
->
attach_adapter
(
adap
)))
{
printk
(
KERN_WARNING
"i2c-core.o:
while unregistering "
dev_warn
(
&
adap
->
dev
,
"
while unregistering "
"dummy driver %s, adapter
%s
could "
"dummy driver %s, adapter could "
"not be detached properly; driver "
"not be detached properly; driver "
"not unloaded!"
,
driver
->
name
,
"not unloaded!"
,
driver
->
name
);
adap
->
name
);
goto
out_unlock
;
goto
out_unlock
;
}
}
}
else
{
}
else
{
...
@@ -295,20 +291,17 @@ int i2c_del_driver(struct i2c_driver *driver)
...
@@ -295,20 +291,17 @@ int i2c_del_driver(struct i2c_driver *driver)
client
->
driver
==
driver
)
{
client
->
driver
==
driver
)
{
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: "
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: "
"detaching client %s:
\n
"
,
"detaching client %s:
\n
"
,
client
->
name
));
client
->
dev
.
name
));
if
((
res
=
driver
->
if
((
res
=
driver
->
detach_client
(
client
)))
{
detach_client
(
client
)))
dev_err
(
&
adap
->
dev
,
"while "
{
printk
(
KERN_ERR
"i2c-core.o: while "
"unregistering driver "
"unregistering driver "
"`%s', the client at "
"`%s', the client at "
"address %02x of "
"address %02x of "
"adapter
`%s'
could not "
"adapter could not "
"be detached; driver "
"be detached; driver "
"not unloaded!"
,
"not unloaded!"
,
driver
->
name
,
driver
->
name
,
client
->
addr
,
client
->
addr
);
adap
->
name
);
goto
out_unlock
;
goto
out_unlock
;
}
}
}
}
...
@@ -362,7 +355,7 @@ int i2c_attach_client(struct i2c_client *client)
...
@@ -362,7 +355,7 @@ int i2c_attach_client(struct i2c_client *client)
printk
(
KERN_WARNING
printk
(
KERN_WARNING
" i2c-core.o: attach_client(%s) - enlarge I2C_CLIENT_MAX.
\n
"
,
" i2c-core.o: attach_client(%s) - enlarge I2C_CLIENT_MAX.
\n
"
,
client
->
name
);
client
->
dev
.
name
);
out_unlock_list:
out_unlock_list:
up
(
&
adapter
->
list
);
up
(
&
adapter
->
list
);
...
@@ -374,19 +367,26 @@ int i2c_attach_client(struct i2c_client *client)
...
@@ -374,19 +367,26 @@ int i2c_attach_client(struct i2c_client *client)
if
(
adapter
->
client_register
)
{
if
(
adapter
->
client_register
)
{
if
(
adapter
->
client_register
(
client
))
{
if
(
adapter
->
client_register
(
client
))
{
printk
(
KERN_DEBUG
dev_warn
(
&
adapter
->
dev
,
"warning: client_register "
"i2c-core.o: warning: client_register seems "
"seems to have failed for client %02x
\n
"
,
"to have failed for client %02x at adapter %s
\n
"
,
client
->
addr
);
client
->
addr
,
adapter
->
name
);
}
}
}
}
DEB
(
printk
(
KERN_DEBUG
DEB
(
dev_dbg
(
&
adapter
->
dev
,
"client [%s] registered to adapter "
"i2c-core.o: client [%s] registered to adapter [%s] "
"(pos. %d).
\n
"
,
client
->
dev
.
name
,
i
));
"(pos. %d).
\n
"
,
client
->
name
,
adapter
->
name
,
i
));
if
(
client
->
flags
&
I2C_CLIENT_ALLOW_USE
)
if
(
client
->
flags
&
I2C_CLIENT_ALLOW_USE
)
client
->
usage_count
=
0
;
client
->
usage_count
=
0
;
client
->
dev
.
parent
=
&
client
->
adapter
->
dev
;
client
->
dev
.
driver
=
&
client
->
driver
->
driver
;
client
->
dev
.
bus
=
&
i2c_bus_type
;
snprintf
(
&
client
->
dev
.
bus_id
[
0
],
sizeof
(
client
->
dev
.
bus_id
),
"i2c_dev_%d"
,
i
);
printk
(
"registering %s
\n
"
,
client
->
dev
.
bus_id
);
device_register
(
&
client
->
dev
);
return
0
;
return
0
;
}
}
...
@@ -404,7 +404,7 @@ int i2c_detach_client(struct i2c_client *client)
...
@@ -404,7 +404,7 @@ int i2c_detach_client(struct i2c_client *client)
if
(
res
)
{
if
(
res
)
{
printk
(
KERN_ERR
printk
(
KERN_ERR
"i2c-core.o: client_unregister [%s] failed, "
"i2c-core.o: client_unregister [%s] failed, "
"client not detached"
,
client
->
name
);
"client not detached"
,
client
->
dev
.
name
);
goto
out
;
goto
out
;
}
}
}
}
...
@@ -419,10 +419,11 @@ int i2c_detach_client(struct i2c_client *client)
...
@@ -419,10 +419,11 @@ int i2c_detach_client(struct i2c_client *client)
printk
(
KERN_WARNING
printk
(
KERN_WARNING
" i2c-core.o: unregister_client [%s] not found
\n
"
,
" i2c-core.o: unregister_client [%s] not found
\n
"
,
client
->
name
);
client
->
dev
.
name
);
res
=
-
ENODEV
;
res
=
-
ENODEV
;
out_unlock:
out_unlock:
device_unregister
(
&
client
->
dev
);
up
(
&
adapter
->
list
);
up
(
&
adapter
->
list
);
out:
out:
return
res
;
return
res
;
...
@@ -531,7 +532,7 @@ static ssize_t i2cproc_bus_read(struct file *file, char *buf,
...
@@ -531,7 +532,7 @@ static ssize_t i2cproc_bus_read(struct file *file, char *buf,
client
=
adapters
[
i
]
->
clients
[
order
[
j
]];
client
=
adapters
[
i
]
->
clients
[
order
[
j
]];
len
+=
sprintf
(
kbuf
+
len
,
"%02x
\t
%-32s
\t
%-32s
\n
"
,
len
+=
sprintf
(
kbuf
+
len
,
"%02x
\t
%-32s
\t
%-32s
\n
"
,
client
->
addr
,
client
->
addr
,
client
->
name
,
client
->
dev
.
name
,
client
->
driver
->
name
);
client
->
driver
->
name
);
}
}
len
=
len
-
file
->
f_pos
;
len
=
len
-
file
->
f_pos
;
...
@@ -579,7 +580,7 @@ static int bus_i2c_show(struct seq_file *s, void *p)
...
@@ -579,7 +580,7 @@ static int bus_i2c_show(struct seq_file *s, void *p)
seq_printf
(
s
,
"dummy "
);
seq_printf
(
s
,
"dummy "
);
seq_printf
(
s
,
"
\t
%-32s
\t
%-32s
\n
"
,
seq_printf
(
s
,
"
\t
%-32s
\t
%-32s
\n
"
,
adapter
->
name
,
adapter
->
algo
->
name
);
adapter
->
dev
.
name
,
adapter
->
algo
->
name
);
}
}
up
(
&
core_lists
);
up
(
&
core_lists
);
...
@@ -675,7 +676,7 @@ static void __exit i2c_exit(void)
...
@@ -675,7 +676,7 @@ static void __exit i2c_exit(void)
bus_unregister
(
&
i2c_bus_type
);
bus_unregister
(
&
i2c_bus_type
);
}
}
module_init
(
i2c_init
);
subsys_initcall
(
i2c_init
);
module_exit
(
i2c_exit
);
module_exit
(
i2c_exit
);
/* ----------------------------------------------------
/* ----------------------------------------------------
...
@@ -688,8 +689,7 @@ int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg msgs[],int num)
...
@@ -688,8 +689,7 @@ int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg msgs[],int num)
int
ret
;
int
ret
;
if
(
adap
->
algo
->
master_xfer
)
{
if
(
adap
->
algo
->
master_xfer
)
{
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: master_xfer: %s with %d msgs.
\n
"
,
DEB2
(
dev_dbg
(
&
adap
->
dev
,
"master_xfer: with %d msgs.
\n
"
,
num
));
adap
->
name
,
num
));
down
(
&
adap
->
bus
);
down
(
&
adap
->
bus
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
msgs
,
num
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
msgs
,
num
);
...
@@ -697,8 +697,7 @@ int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg msgs[],int num)
...
@@ -697,8 +697,7 @@ int i2c_transfer(struct i2c_adapter * adap, struct i2c_msg msgs[],int num)
return
ret
;
return
ret
;
}
else
{
}
else
{
printk
(
KERN_ERR
"i2c-core.o: I2C adapter %04x: I2C level transfers not supported
\n
"
,
dev_err
(
&
adap
->
dev
,
"I2C level transfers not supported
\n
"
);
adap
->
id
);
return
-
ENOSYS
;
return
-
ENOSYS
;
}
}
}
}
...
@@ -715,8 +714,8 @@ int i2c_master_send(struct i2c_client *client,const char *buf ,int count)
...
@@ -715,8 +714,8 @@ int i2c_master_send(struct i2c_client *client,const char *buf ,int count)
msg
.
len
=
count
;
msg
.
len
=
count
;
(
const
char
*
)
msg
.
buf
=
buf
;
(
const
char
*
)
msg
.
buf
=
buf
;
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: master_send: writing %d bytes on %
s.
\n
"
,
DEB2
(
dev_dbg
(
&
client
->
adapter
->
dev
,
"master_send: writing %d byte
s.
\n
"
,
count
,
client
->
adapter
->
name
));
count
));
down
(
&
adap
->
bus
);
down
(
&
adap
->
bus
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
&
msg
,
1
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
&
msg
,
1
);
...
@@ -745,8 +744,8 @@ int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
...
@@ -745,8 +744,8 @@ int i2c_master_recv(struct i2c_client *client, char *buf ,int count)
msg
.
len
=
count
;
msg
.
len
=
count
;
msg
.
buf
=
buf
;
msg
.
buf
=
buf
;
DEB2
(
printk
(
KERN_DEBUG
"i2c-core.o: master_recv: reading %d bytes on %
s.
\n
"
,
DEB2
(
dev_dbg
(
&
client
->
adapter
->
dev
,
"master_recv: reading %d byte
s.
\n
"
,
count
,
client
->
adapter
->
name
));
count
));
down
(
&
adap
->
bus
);
down
(
&
adap
->
bus
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
&
msg
,
1
);
ret
=
adap
->
algo
->
master_xfer
(
adap
,
&
msg
,
1
);
...
...
drivers/i2c/i2c-dev.c
View file @
0c950d69
...
@@ -30,6 +30,9 @@
...
@@ -30,6 +30,9 @@
/* $Id: i2c-dev.c,v 1.53 2003/01/21 08:08:16 kmalkki Exp $ */
/* $Id: i2c-dev.c,v 1.53 2003/01/21 08:08:16 kmalkki Exp $ */
/* If you want debugging uncomment: */
/* #define DEBUG 1 */
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/fs.h>
...
@@ -41,10 +44,6 @@
...
@@ -41,10 +44,6 @@
#include <linux/i2c-dev.h>
#include <linux/i2c-dev.h>
#include <asm/uaccess.h>
#include <asm/uaccess.h>
/* If you want debugging uncomment: */
/* #define DEBUG */
/* struct file_operations changed too often in the 2.1 series for nice code */
/* struct file_operations changed too often in the 2.1 series for nice code */
static
ssize_t
i2cdev_read
(
struct
file
*
file
,
char
*
buf
,
size_t
count
,
static
ssize_t
i2cdev_read
(
struct
file
*
file
,
char
*
buf
,
size_t
count
,
...
@@ -87,7 +86,9 @@ static struct i2c_driver i2cdev_driver = {
...
@@ -87,7 +86,9 @@ static struct i2c_driver i2cdev_driver = {
};
};
static
struct
i2c_client
i2cdev_client_template
=
{
static
struct
i2c_client
i2cdev_client_template
=
{
.
name
=
"I2C /dev entry"
,
.
dev
=
{
.
name
=
"I2C /dev entry"
,
},
.
id
=
1
,
.
id
=
1
,
.
addr
=
-
1
,
.
addr
=
-
1
,
.
driver
=
&
i2cdev_driver
,
.
driver
=
&
i2cdev_driver
,
...
@@ -386,11 +387,11 @@ int i2cdev_attach_adapter(struct i2c_adapter *adap)
...
@@ -386,11 +387,11 @@ int i2cdev_attach_adapter(struct i2c_adapter *adap)
char
name
[
12
];
char
name
[
12
];
if
((
i
=
i2c_adapter_id
(
adap
))
<
0
)
{
if
((
i
=
i2c_adapter_id
(
adap
))
<
0
)
{
printk
(
KERN_DEBUG
"i2c-dev.o:
Unknown adapter ?!?
\n
"
);
dev_dbg
(
&
adap
->
dev
,
"
Unknown adapter ?!?
\n
"
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
if
(
i
>=
I2CDEV_ADAPS_MAX
)
{
if
(
i
>=
I2CDEV_ADAPS_MAX
)
{
printk
(
KERN_DEBUG
"i2c-dev.o:
Adapter number too large?!? (%d)
\n
"
,
i
);
dev_dbg
(
&
adap
->
dev
,
"
Adapter number too large?!? (%d)
\n
"
,
i
);
return
-
ENODEV
;
return
-
ENODEV
;
}
}
...
@@ -401,14 +402,12 @@ int i2cdev_attach_adapter(struct i2c_adapter *adap)
...
@@ -401,14 +402,12 @@ int i2cdev_attach_adapter(struct i2c_adapter *adap)
DEVFS_FL_DEFAULT
,
I2C_MAJOR
,
i
,
DEVFS_FL_DEFAULT
,
I2C_MAJOR
,
i
,
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
S_IFCHR
|
S_IRUSR
|
S_IWUSR
,
&
i2cdev_fops
,
NULL
);
&
i2cdev_fops
,
NULL
);
printk
(
KERN_DEBUG
"i2c-dev.o: Registered '%s' as minor %d
\n
"
,
adap
->
name
,
i
);
dev_dbg
(
&
adap
->
dev
,
"Registered as minor %d
\n
"
,
i
);
}
else
{
}
else
{
/* This is actually a detach_adapter call! */
/* This is actually a detach_adapter call! */
devfs_remove
(
"i2c/%d"
,
i
);
devfs_remove
(
"i2c/%d"
,
i
);
i2cdev_adaps
[
i
]
=
NULL
;
i2cdev_adaps
[
i
]
=
NULL
;
#ifdef DEBUG
dev_dbg
(
&
adap
->
dev
,
"Adapter unregistered
\n
"
);
printk
(
KERN_DEBUG
"i2c-dev.o: Adapter unregistered: %s
\n
"
,
adap
->
name
);
#endif
}
}
return
0
;
return
0
;
...
...
drivers/i2c/i2c-elektor.c
View file @
0c950d69
...
@@ -174,10 +174,12 @@ static struct i2c_algo_pcf_data pcf_isa_data = {
...
@@ -174,10 +174,12 @@ static struct i2c_algo_pcf_data pcf_isa_data = {
};
};
static
struct
i2c_adapter
pcf_isa_ops
=
{
static
struct
i2c_adapter
pcf_isa_ops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"PCF8584 ISA adapter"
,
.
id
=
I2C_HW_P_ELEK
,
.
id
=
I2C_HW_P_ELEK
,
.
algo_data
=
&
pcf_isa_data
,
.
algo_data
=
&
pcf_isa_data
,
.
dev
=
{
.
name
=
"PCF8584 ISA adapter"
,
},
};
};
static
int
__init
i2c_pcfisa_init
(
void
)
static
int
__init
i2c_pcfisa_init
(
void
)
...
...
drivers/i2c/i2c-elv.c
View file @
0c950d69
...
@@ -129,9 +129,11 @@ static struct i2c_algo_bit_data bit_elv_data = {
...
@@ -129,9 +129,11 @@ static struct i2c_algo_bit_data bit_elv_data = {
static
struct
i2c_adapter
bit_elv_ops
=
{
static
struct
i2c_adapter
bit_elv_ops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"ELV Parallel port adaptor"
,
.
id
=
I2C_HW_B_ELV
,
.
id
=
I2C_HW_B_ELV
,
.
algo_data
=
&
bit_elv_data
,
.
algo_data
=
&
bit_elv_data
,
.
dev
=
{
.
name
=
"ELV Parallel port adaptor"
,
},
};
};
static
int
__init
i2c_bitelv_init
(
void
)
static
int
__init
i2c_bitelv_init
(
void
)
...
@@ -148,7 +150,7 @@ static int __init i2c_bitelv_init(void)
...
@@ -148,7 +150,7 @@ static int __init i2c_bitelv_init(void)
return
-
ENODEV
;
return
-
ENODEV
;
}
}
}
else
{
}
else
{
bit_elv_ops
.
data
=
(
void
*
)
base
;
i2c_set_adapdata
(
&
bit_elv_ops
,
(
void
*
)
base
)
;
if
(
bit_elv_init
()
==
0
)
{
if
(
bit_elv_init
()
==
0
)
{
if
(
i2c_bit_add_bus
(
&
bit_elv_ops
)
<
0
)
if
(
i2c_bit_add_bus
(
&
bit_elv_ops
)
<
0
)
return
-
ENODEV
;
return
-
ENODEV
;
...
...
drivers/i2c/i2c-philips-par.c
View file @
0c950d69
...
@@ -151,8 +151,10 @@ static struct i2c_algo_bit_data bit_lp_data2 = {
...
@@ -151,8 +151,10 @@ static struct i2c_algo_bit_data bit_lp_data2 = {
static
struct
i2c_adapter
bit_lp_ops
=
{
static
struct
i2c_adapter
bit_lp_ops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"Philips Parallel port adapter"
,
.
id
=
I2C_HW_B_LP
,
.
id
=
I2C_HW_B_LP
,
.
dev
=
{
.
name
=
"Philips Parallel port adapter"
,
},
};
};
static
void
i2c_parport_attach
(
struct
parport
*
port
)
static
void
i2c_parport_attach
(
struct
parport
*
port
)
...
...
drivers/i2c/i2c-proc.c
View file @
0c950d69
...
@@ -23,6 +23,8 @@
...
@@ -23,6 +23,8 @@
This driver puts entries in /proc/sys/dev/sensors for each I2C device
This driver puts entries in /proc/sys/dev/sensors for each I2C device
*/
*/
/* #define DEBUG 1 */
#include <linux/module.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/slab.h>
...
@@ -581,9 +583,9 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -581,9 +583,9 @@ int i2c_detect(struct i2c_adapter *adapter,
is_isa
?
SENSORS_ISA_BUS
:
i2c_adapter_id
(
adapter
);
is_isa
?
SENSORS_ISA_BUS
:
i2c_adapter_id
(
adapter
);
/* Forget it if we can't probe using SMBUS_QUICK */
/* Forget it if we can't probe using SMBUS_QUICK */
if
((
!
is_isa
)
if
((
!
is_isa
)
&&
&&
!
i2c_check_functionality
(
adapter
,
!
i2c_check_functionality
(
adapter
,
I2C_FUNC_SMBUS_QUICK
))
I2C_FUNC_SMBUS_QUICK
))
return
-
1
;
return
-
1
;
for
(
addr
=
0x00
;
addr
<=
(
is_isa
?
0xffff
:
0x7f
);
addr
++
)
{
for
(
addr
=
0x00
;
addr
<=
(
is_isa
?
0xffff
:
0x7f
);
addr
++
)
{
/* XXX: WTF is going on here??? */
/* XXX: WTF is going on here??? */
...
@@ -594,31 +596,14 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -594,31 +596,14 @@ int i2c_detect(struct i2c_adapter *adapter,
/* If it is in one of the force entries, we don't do any
/* If it is in one of the force entries, we don't do any
detection at all */
detection at all */
found
=
0
;
found
=
0
;
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
this_force
=
address_data
->
forces
+
i
,
this_force
->
force
);
i
++
)
{
!
found
for
(
j
=
0
;
!
found
&&
(
this_force
->
force
[
j
]
!=
SENSORS_I2C_END
);
j
+=
2
)
{
&&
(
this_force
=
if
(
((
adapter_id
==
this_force
->
force
[
j
])
||
address_data
->
forces
+
i
,
this_force
->
force
);
i
++
)
{
((
this_force
->
force
[
j
]
==
SENSORS_ANY_I2C_BUS
)
&&
!
is_isa
))
&&
for
(
j
=
0
;
(
addr
==
this_force
->
force
[
j
+
1
])
)
{
!
found
dev_dbg
(
&
adapter
->
dev
,
"found force parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
&&
(
this_force
->
force
[
j
]
!=
SENSORS_I2C_END
);
if
((
err
=
found_proc
(
adapter
,
addr
,
0
,
this_force
->
kind
)))
j
+=
2
)
{
return
err
;
if
(
((
adapter_id
==
this_force
->
force
[
j
])
||
((
this_force
->
force
[
j
]
==
SENSORS_ANY_I2C_BUS
)
&&
!
is_isa
))
&&
(
addr
==
this_force
->
force
[
j
+
1
]))
{
#ifdef DEBUG
printk
(
KERN_DEBUG
"i2c-proc.o: found force parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
if
(
(
err
=
found_proc
(
adapter
,
addr
,
0
,
this_force
->
kind
)))
return
err
;
found
=
1
;
found
=
1
;
}
}
}
}
...
@@ -628,42 +613,22 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -628,42 +613,22 @@ int i2c_detect(struct i2c_adapter *adapter,
/* If this address is in one of the ignores, we can forget about it
/* If this address is in one of the ignores, we can forget about it
right now */
right now */
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
ignore
[
i
]
!=
SENSORS_I2C_END
);
i
+=
2
)
{
!
found
if
(
((
adapter_id
==
address_data
->
ignore
[
i
])
||
&&
(
address_data
->
ignore
[
i
]
!=
SENSORS_I2C_END
);
((
address_data
->
ignore
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&&
i
+=
2
)
{
!
is_isa
))
&&
if
(
(
addr
==
address_data
->
ignore
[
i
+
1
]))
{
((
adapter_id
==
address_data
->
ignore
[
i
])
dev_dbg
(
&
adapter
->
dev
,
"found ignore parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
||
((
address_data
->
ignore
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&&
!
is_isa
))
&&
(
addr
==
address_data
->
ignore
[
i
+
1
]))
{
#ifdef DEBUG
printk
(
KERN_DEBUG
"i2c-proc.o: found ignore parameter for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
ignore_range
[
i
]
!=
SENSORS_I2C_END
);
i
+=
3
)
{
!
found
if
(
((
adapter_id
==
address_data
->
ignore_range
[
i
])
||
&&
(
address_data
->
ignore_range
[
i
]
!=
SENSORS_I2C_END
);
((
address_data
->
ignore_range
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
i
+=
3
)
{
!
is_isa
))
&&
if
(
(
addr
>=
address_data
->
ignore_range
[
i
+
1
])
&&
((
adapter_id
==
address_data
->
ignore_range
[
i
])
(
addr
<=
address_data
->
ignore_range
[
i
+
2
]))
{
||
dev_dbg
(
&
adapter
->
dev
,
"found ignore_range parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
((
address_data
->
ignore_range
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
!
is_isa
))
&&
(
addr
>=
address_data
->
ignore_range
[
i
+
1
])
&&
(
addr
<=
address_data
->
ignore_range
[
i
+
2
]))
{
#ifdef DEBUG
printk
(
KERN_DEBUG
"i2c-proc.o: found ignore_range parameter for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
...
@@ -673,68 +638,31 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -673,68 +638,31 @@ int i2c_detect(struct i2c_adapter *adapter,
/* Now, we will do a detection, but only if it is in the normal or
/* Now, we will do a detection, but only if it is in the normal or
probe entries */
probe entries */
if
(
is_isa
)
{
if
(
is_isa
)
{
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
normal_isa
[
i
]
!=
SENSORS_ISA_END
);
i
+=
1
)
{
!
found
&&
(
address_data
->
normal_isa
[
i
]
!=
SENSORS_ISA_END
);
i
+=
1
)
{
if
(
addr
==
address_data
->
normal_isa
[
i
])
{
if
(
addr
==
address_data
->
normal_isa
[
i
])
{
#ifdef DEBUG
dev_dbg
(
&
adapter
->
dev
,
"found normal isa entry for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
printk
(
KERN_DEBUG
"i2c-proc.o: found normal isa entry for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
normal_isa_range
[
i
]
!=
SENSORS_ISA_END
);
i
+=
3
)
{
!
found
if
((
addr
>=
address_data
->
normal_isa_range
[
i
])
&&
&&
(
address_data
->
normal_isa_range
[
i
]
!=
(
addr
<=
address_data
->
normal_isa_range
[
i
+
1
])
&&
SENSORS_ISA_END
);
i
+=
3
)
{
((
addr
-
address_data
->
normal_isa_range
[
i
])
%
address_data
->
normal_isa_range
[
i
+
2
]
==
0
))
{
if
((
addr
>=
dev_dbg
(
&
adapter
->
dev
,
"found normal isa_range entry for adapter %d, addr %04x"
,
adapter_id
,
addr
);
address_data
->
normal_isa_range
[
i
])
&&
(
addr
<=
address_data
->
normal_isa_range
[
i
+
1
])
&&
((
addr
-
address_data
->
normal_isa_range
[
i
])
%
address_data
->
normal_isa_range
[
i
+
2
]
==
0
))
{
#ifdef DEBUG
printk
(
KERN_DEBUG
"i2c-proc.o: found normal isa_range entry for adapter %d, "
"addr %04x"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
}
else
{
}
else
{
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
normal_i2c
[
i
]
!=
SENSORS_I2C_END
);
i
+=
1
)
{
!
found
&&
(
address_data
->
normal_i2c
[
i
]
!=
SENSORS_I2C_END
);
i
+=
1
)
{
if
(
addr
==
address_data
->
normal_i2c
[
i
])
{
if
(
addr
==
address_data
->
normal_i2c
[
i
])
{
found
=
1
;
found
=
1
;
#ifdef DEBUG
dev_dbg
(
&
adapter
->
dev
,
"found normal i2c entry for adapter %d, addr %02x"
,
adapter_id
,
addr
);
printk
(
KERN_DEBUG
"i2c-proc.o: found normal i2c entry for adapter %d, "
"addr %02x"
,
adapter_id
,
addr
);
#endif
}
}
}
}
for
(
i
=
0
;
for
(
i
=
0
;
!
found
&&
(
address_data
->
normal_i2c_range
[
i
]
!=
SENSORS_I2C_END
);
i
+=
2
)
{
!
found
if
((
addr
>=
address_data
->
normal_i2c_range
[
i
])
&&
&&
(
address_data
->
normal_i2c_range
[
i
]
!=
(
addr
<=
address_data
->
normal_i2c_range
[
i
+
1
]))
{
SENSORS_I2C_END
);
i
+=
2
)
{
dev_dbg
(
&
adapter
->
dev
,
"found normal i2c_range entry for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
if
((
addr
>=
address_data
->
normal_i2c_range
[
i
])
&&
(
addr
<=
address_data
->
normal_i2c_range
[
i
+
1
]))
{
#ifdef DEBUG
printk
(
KERN_DEBUG
"i2c-proc.o: found normal i2c_range entry for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
...
@@ -747,30 +675,17 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -747,30 +675,17 @@ int i2c_detect(struct i2c_adapter *adapter,
((
address_data
->
((
address_data
->
probe
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
!
is_isa
))
probe
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
!
is_isa
))
&&
(
addr
==
address_data
->
probe
[
i
+
1
]))
{
&&
(
addr
==
address_data
->
probe
[
i
+
1
]))
{
#ifdef DEBUG
dev_dbg
(
&
adapter
->
dev
,
"found probe parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
printk
(
KERN_DEBUG
"i2c-proc.o: found probe parameter for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
found
=
1
;
found
=
1
;
}
}
}
}
for
(
i
=
0
;
!
found
&&
for
(
i
=
0
;
!
found
&&
(
address_data
->
probe_range
[
i
]
!=
SENSORS_I2C_END
);
i
+=
3
)
{
(
address_data
->
probe_range
[
i
]
!=
SENSORS_I2C_END
);
if
(
((
adapter_id
==
address_data
->
probe_range
[
i
])
||
i
+=
3
)
{
((
address_data
->
probe_range
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
!
is_isa
))
&&
if
(
(
addr
>=
address_data
->
probe_range
[
i
+
1
])
&&
((
adapter_id
==
address_data
->
probe_range
[
i
])
(
addr
<=
address_data
->
probe_range
[
i
+
2
]))
{
||
((
address_data
->
probe_range
[
i
]
==
SENSORS_ANY_I2C_BUS
)
&
!
is_isa
))
&&
(
addr
>=
address_data
->
probe_range
[
i
+
1
])
&&
(
addr
<=
address_data
->
probe_range
[
i
+
2
]))
{
found
=
1
;
found
=
1
;
#ifdef DEBUG
dev_dbg
(
&
adapter
->
dev
,
"found probe_range parameter for adapter %d, addr %04x
\n
"
,
adapter_id
,
addr
);
printk
(
KERN_DEBUG
"i2c-proc.o: found probe_range parameter for adapter %d, "
"addr %04x
\n
"
,
adapter_id
,
addr
);
#endif
}
}
}
}
if
(
!
found
)
if
(
!
found
)
...
@@ -779,8 +694,7 @@ int i2c_detect(struct i2c_adapter *adapter,
...
@@ -779,8 +694,7 @@ int i2c_detect(struct i2c_adapter *adapter,
/* OK, so we really should examine this address. First check
/* OK, so we really should examine this address. First check
whether there is some client here at all! */
whether there is some client here at all! */
if
(
is_isa
||
if
(
is_isa
||
(
i2c_smbus_xfer
(
i2c_smbus_xfer
(
adapter
,
addr
,
0
,
0
,
0
,
I2C_SMBUS_QUICK
,
NULL
)
>=
0
))
(
adapter
,
addr
,
0
,
0
,
0
,
I2C_SMBUS_QUICK
,
NULL
)
>=
0
))
if
((
err
=
found_proc
(
adapter
,
addr
,
0
,
-
1
)))
if
((
err
=
found_proc
(
adapter
,
addr
,
0
,
-
1
)))
return
err
;
return
err
;
}
}
...
...
drivers/i2c/i2c-velleman.c
View file @
0c950d69
...
@@ -114,9 +114,11 @@ static struct i2c_algo_bit_data bit_velle_data = {
...
@@ -114,9 +114,11 @@ static struct i2c_algo_bit_data bit_velle_data = {
static
struct
i2c_adapter
bit_velle_ops
=
{
static
struct
i2c_adapter
bit_velle_ops
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"Velleman K8000"
,
.
id
=
I2C_HW_B_VELLE
,
.
id
=
I2C_HW_B_VELLE
,
.
algo_data
=
&
bit_velle_data
,
.
algo_data
=
&
bit_velle_data
,
.
dev
=
{
.
name
=
"Velleman K8000"
,
},
};
};
static
int
__init
i2c_bitvelle_init
(
void
)
static
int
__init
i2c_bitvelle_init
(
void
)
...
...
drivers/i2c/scx200_acb.c
View file @
0c950d69
...
@@ -140,8 +140,7 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
...
@@ -140,8 +140,7 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
switch
(
iface
->
state
)
{
switch
(
iface
->
state
)
{
case
state_idle
:
case
state_idle
:
printk
(
KERN_WARNING
NAME
": %s, interrupt in idle state
\n
"
,
dev_warn
(
&
iface
->
adapter
.
dev
,
"interrupt in idle state
\n
"
,);
iface
->
adapter
.
name
);
break
;
break
;
case
state_address
:
case
state_address
:
...
@@ -226,8 +225,8 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
...
@@ -226,8 +225,8 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
return
;
return
;
error:
error:
printk
(
KERN_ERR
NAME
": %s, %s in state %s
\n
"
,
iface
->
adapter
.
name
,
dev_err
(
&
iface
->
adapter
.
dev
,
"%s in state %s
\n
"
,
errmsg
,
errmsg
,
scx200_acb_state_name
[
iface
->
state
]);
scx200_acb_state_name
[
iface
->
state
]);
iface
->
state
=
state_idle
;
iface
->
state
=
state_idle
;
iface
->
result
=
-
EIO
;
iface
->
result
=
-
EIO
;
...
@@ -236,8 +235,8 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
...
@@ -236,8 +235,8 @@ static void scx200_acb_machine(struct scx200_acb_iface *iface, u8 status)
static
void
scx200_acb_timeout
(
struct
scx200_acb_iface
*
iface
)
static
void
scx200_acb_timeout
(
struct
scx200_acb_iface
*
iface
)
{
{
printk
(
KERN_ERR
NAME
": %s, timeout in state %s
\n
"
,
dev_err
(
&
iface
->
adapter
.
dev
,
"timeout in state %s
\n
"
,
iface
->
adapter
.
name
,
scx200_acb_state_name
[
iface
->
state
]);
scx200_acb_state_name
[
iface
->
state
]);
iface
->
state
=
state_idle
;
iface
->
state
=
state_idle
;
iface
->
result
=
-
EIO
;
iface
->
result
=
-
EIO
;
...
@@ -290,7 +289,7 @@ static s32 scx200_acb_smbus_xfer(struct i2c_adapter *adapter,
...
@@ -290,7 +289,7 @@ static s32 scx200_acb_smbus_xfer(struct i2c_adapter *adapter,
char
rw
,
u8
command
,
int
size
,
char
rw
,
u8
command
,
int
size
,
union
i2c_smbus_data
*
data
)
union
i2c_smbus_data
*
data
)
{
{
struct
scx200_acb_iface
*
iface
=
adapter
->
data
;
struct
scx200_acb_iface
*
iface
=
i2c_get_adapdata
(
adapter
)
;
int
len
;
int
len
;
u8
*
buffer
;
u8
*
buffer
;
u16
cur_word
;
u16
cur_word
;
...
@@ -331,13 +330,12 @@ static s32 scx200_acb_smbus_xfer(struct i2c_adapter *adapter,
...
@@ -331,13 +330,12 @@ static s32 scx200_acb_smbus_xfer(struct i2c_adapter *adapter,
size
,
address
,
command
,
len
,
rw
==
I2C_SMBUS_READ
);
size
,
address
,
command
,
len
,
rw
==
I2C_SMBUS_READ
);
if
(
!
len
&&
rw
==
I2C_SMBUS_READ
)
{
if
(
!
len
&&
rw
==
I2C_SMBUS_READ
)
{
printk
(
KERN_WARNING
NAME
": %s, zero length read
\n
"
,
dev_warn
(
&
adapter
->
dev
,
"zero length read
\n
"
);
adapter
->
name
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
if
(
len
&&
!
buffer
)
{
if
(
len
&&
!
buffer
)
{
printk
(
KERN_WARNING
NAME
": %s, nonzero length but no buffer
\n
"
,
adapter
->
name
);
dev_warn
(
&
adapter
->
dev
,
"nonzero length but no buffer
\n
"
);
return
-
EFAULT
;
return
-
EFAULT
;
}
}
...
@@ -457,18 +455,18 @@ static int __init scx200_acb_create(int base, int index)
...
@@ -457,18 +455,18 @@ static int __init scx200_acb_create(int base, int index)
memset
(
iface
,
0
,
sizeof
(
*
iface
));
memset
(
iface
,
0
,
sizeof
(
*
iface
));
adapter
=
&
iface
->
adapter
;
adapter
=
&
iface
->
adapter
;
adapter
->
data
=
iface
;
i2c_set_adapdata
(
adapter
,
iface
)
;
s
printf
(
adapter
->
name
,
"SCx200 ACB%d"
,
index
);
s
nprintf
(
adapter
->
dev
.
name
,
DEVICE_NAME_SIZE
,
"SCx200 ACB%d"
,
index
);
adapter
->
owner
=
THIS_MODULE
;
adapter
->
owner
=
THIS_MODULE
;
adapter
->
id
=
I2C_ALGO_SMBUS
;
adapter
->
id
=
I2C_ALGO_SMBUS
;
adapter
->
algo
=
&
scx200_acb_algorithm
;
adapter
->
algo
=
&
scx200_acb_algorithm
;
init_MUTEX
(
&
iface
->
sem
);
init_MUTEX
(
&
iface
->
sem
);
s
printf
(
description
,
"NatSemi SCx200 ACCESS.bus [%s]"
,
adapter
->
name
);
s
nprintf
(
description
,
sizeof
(
description
),
"NatSemi SCx200 ACCESS.bus [%s]"
,
adapter
->
dev
.
name
);
if
(
request_region
(
base
,
8
,
description
)
==
0
)
{
if
(
request_region
(
base
,
8
,
description
)
==
0
)
{
printk
(
KERN_ERR
NAME
": %s, can't allocate io 0x%x-0x%x
\n
"
,
dev_err
(
&
adapter
->
dev
,
"can't allocate io 0x%x-0x%x
\n
"
,
adapter
->
name
,
base
,
base
+
8
-
1
);
base
,
base
+
8
-
1
);
rc
=
-
EBUSY
;
rc
=
-
EBUSY
;
goto
errout
;
goto
errout
;
}
}
...
@@ -476,14 +474,14 @@ static int __init scx200_acb_create(int base, int index)
...
@@ -476,14 +474,14 @@ static int __init scx200_acb_create(int base, int index)
rc
=
scx200_acb_probe
(
iface
);
rc
=
scx200_acb_probe
(
iface
);
if
(
rc
)
{
if
(
rc
)
{
printk
(
KERN_WARNING
NAME
": %s, probe failed
\n
"
,
adapter
->
name
);
dev_warn
(
&
adapter
->
dev
,
"probe failed
\n
"
);
goto
errout
;
goto
errout
;
}
}
scx200_acb_reset
(
iface
);
scx200_acb_reset
(
iface
);
if
(
i2c_add_adapter
(
adapter
)
<
0
)
{
if
(
i2c_add_adapter
(
adapter
)
<
0
)
{
printk
(
KERN_ERR
NAME
": %s, failed to register
\n
"
,
adapter
->
name
);
dev_err
(
&
adapter
->
dev
,
"failed to register
\n
"
);
rc
=
-
ENODEV
;
rc
=
-
ENODEV
;
goto
errout
;
goto
errout
;
}
}
...
...
drivers/ieee1394/pcilynx.c
View file @
0c950d69
...
@@ -138,10 +138,12 @@ static struct i2c_algo_bit_data bit_data = {
...
@@ -138,10 +138,12 @@ static struct i2c_algo_bit_data bit_data = {
};
};
static
struct
i2c_adapter
bit_ops
=
{
static
struct
i2c_adapter
bit_ops
=
{
.
name
=
"PCILynx I2C adapter"
,
.
id
=
0xAA
,
//FIXME: probably we should get an id in i2c-id.h
.
id
=
0xAA
,
//FIXME: probably we should get an id in i2c-id.h
.
client_register
=
bit_reg
,
.
client_register
=
bit_reg
,
.
client_unregister
=
bit_unreg
,
.
client_unregister
=
bit_unreg
,
.
dev
=
{
.
name
=
"PCILynx I2C"
,
},
};
};
...
...
drivers/media/video/adv7175.c
View file @
0c950d69
...
@@ -170,6 +170,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -170,6 +170,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
...
@@ -190,9 +191,10 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -190,9 +191,10 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
// We should never get here!!!
// We should never get here!!!
dname
=
unknown_name
;
dname
=
unknown_name
;
}
}
str
cpy
(
client
->
name
,
dname
);
str
ncpy
(
client
->
dev
.
name
,
dname
,
DEVICE_NAME_SIZE
);
init_MUTEX
(
&
encoder
->
lock
);
init_MUTEX
(
&
encoder
->
lock
);
encoder
->
client
=
client
;
encoder
->
client
=
client
;
i2c_set_clientdata
(
client
,
encoder
);
encoder
->
addr
=
addr
;
encoder
->
addr
=
addr
;
encoder
->
norm
=
VIDEO_MODE_PAL
;
encoder
->
norm
=
VIDEO_MODE_PAL
;
encoder
->
input
=
0
;
encoder
->
input
=
0
;
...
@@ -201,7 +203,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -201,7 +203,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
for
(
i
=
1
;
i
<
x_common
;
i
++
)
{
for
(
i
=
1
;
i
<
x_common
;
i
++
)
{
rv
=
i2c_smbus_write_byte
(
client
,
init_common
[
i
]);
rv
=
i2c_smbus_write_byte
(
client
,
init_common
[
i
]);
if
(
rv
<
0
)
{
if
(
rv
<
0
)
{
printk
(
KERN_ERR
"%s_attach: init error %d
\n
"
,
client
->
name
,
rv
);
printk
(
KERN_ERR
"%s_attach: init error %d
\n
"
,
client
->
dev
.
name
,
rv
);
break
;
break
;
}
}
}
}
...
@@ -211,7 +213,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -211,7 +213,7 @@ static int adv717x_attach(struct i2c_adapter *adap, int addr, unsigned short fla
i2c_smbus_write_byte_data
(
client
,
0x07
,
TR0MODE
);
i2c_smbus_write_byte_data
(
client
,
0x07
,
TR0MODE
);
i2c_smbus_read_byte_data
(
client
,
0x12
);
i2c_smbus_read_byte_data
(
client
,
0x12
);
printk
(
KERN_INFO
"%s_attach: %s rev. %d at 0x%02x
\n
"
,
printk
(
KERN_INFO
"%s_attach: %s rev. %d at 0x%02x
\n
"
,
client
->
name
,
dname
,
rv
&
1
,
client
->
addr
);
client
->
dev
.
name
,
dname
,
rv
&
1
,
client
->
addr
);
}
}
i2c_attach_client
(
client
);
i2c_attach_client
(
client
);
...
@@ -229,7 +231,7 @@ int adv717x_probe(struct i2c_adapter *adap)
...
@@ -229,7 +231,7 @@ int adv717x_probe(struct i2c_adapter *adap)
static
int
adv717x_detach
(
struct
i2c_client
*
client
)
static
int
adv717x_detach
(
struct
i2c_client
*
client
)
{
{
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
client
->
data
);
i2c_get_clientdata
(
client
);
kfree
(
client
);
kfree
(
client
);
return
0
;
return
0
;
}
}
...
@@ -237,7 +239,7 @@ static int adv717x_detach(struct i2c_client *client)
...
@@ -237,7 +239,7 @@ static int adv717x_detach(struct i2c_client *client)
static
int
adv717x_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
static
int
adv717x_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
void
*
arg
)
{
{
struct
adv7175
*
encoder
=
client
->
data
;
struct
adv7175
*
encoder
=
i2c_get_clientdata
(
client
)
;
int
i
,
x_ntsc
=
13
,
x_pal
=
13
;
int
i
,
x_ntsc
=
13
,
x_pal
=
13
;
/* x_ntsc is number of entries in init_ntsc -1 */
/* x_ntsc is number of entries in init_ntsc -1 */
/* x_pal is number of entries in init_pal -1 */
/* x_pal is number of entries in init_pal -1 */
...
@@ -297,7 +299,7 @@ static int adv717x_command(struct i2c_client *client, unsigned int cmd,
...
@@ -297,7 +299,7 @@ static int adv717x_command(struct i2c_client *client, unsigned int cmd,
default:
default:
printk
(
KERN_ERR
printk
(
KERN_ERR
"%s: illegal norm: %d
\n
"
,
"%s: illegal norm: %d
\n
"
,
client
->
name
,
iarg
);
client
->
dev
.
name
,
iarg
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
@@ -353,7 +355,7 @@ static int adv717x_command(struct i2c_client *client, unsigned int cmd,
...
@@ -353,7 +355,7 @@ static int adv717x_command(struct i2c_client *client, unsigned int cmd,
default:
default:
printk
(
KERN_ERR
printk
(
KERN_ERR
"%s: illegal input: %d
\n
"
,
"%s: illegal input: %d
\n
"
,
client
->
name
,
iarg
);
client
->
dev
.
name
,
iarg
);
return
-
EINVAL
;
return
-
EINVAL
;
}
}
...
@@ -419,8 +421,10 @@ static struct i2c_driver i2c_driver_adv7176 = {
...
@@ -419,8 +421,10 @@ static struct i2c_driver i2c_driver_adv7176 = {
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"adv7175_client"
,
.
driver
=
&
i2c_driver_adv7175
,
.
driver
=
&
i2c_driver_adv7175
.
dev
=
{
.
name
=
"adv7175_client"
,
},
};
};
static
int
adv717x_init
(
void
)
static
int
adv717x_init
(
void
)
...
...
drivers/media/video/bt819.c
View file @
0c950d69
...
@@ -128,7 +128,7 @@ static int bt819_init(struct i2c_client *client)
...
@@ -128,7 +128,7 @@ static int bt819_init(struct i2c_client *client)
struct
timing
*
timing
;
struct
timing
*
timing
;
decoder
=
client
->
data
;
decoder
=
i2c_get_clientdata
(
client
)
;
timing
=
&
timing_data
[
decoder
->
norm
];
timing
=
&
timing_data
[
decoder
->
norm
];
init
[
3
*
2
-
1
]
=
(((
timing
->
vdelay
>>
8
)
&
0x03
)
<<
6
)
|
init
[
3
*
2
-
1
]
=
(((
timing
->
vdelay
>>
8
)
&
0x03
)
<<
6
)
|
...
@@ -159,6 +159,7 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
...
@@ -159,6 +159,7 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
...
@@ -170,8 +171,8 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
...
@@ -170,8 +171,8 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
}
}
memset
(
decoder
,
0
,
sizeof
(
struct
bt819
));
memset
(
decoder
,
0
,
sizeof
(
struct
bt819
));
str
cpy
(
client
->
name
,
"bt819"
);
str
ncpy
(
client
->
dev
.
name
,
"bt819"
,
DEVICE_NAME_SIZE
);
client
->
data
=
decoder
;
i2c_set_clientdata
(
client
,
decoder
)
;
decoder
->
client
=
client
;
decoder
->
client
=
client
;
decoder
->
addr
=
addr
;
decoder
->
addr
=
addr
;
decoder
->
norm
=
VIDEO_MODE_NTSC
;
decoder
->
norm
=
VIDEO_MODE_NTSC
;
...
@@ -186,10 +187,10 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
...
@@ -186,10 +187,10 @@ static int bt819_attach(struct i2c_adapter *adap, int addr , unsigned long flags
i
=
bt819_init
(
client
);
i
=
bt819_init
(
client
);
if
(
i
<
0
)
{
if
(
i
<
0
)
{
printk
(
KERN_ERR
"%s: bt819_attach: init status %d
\n
"
,
printk
(
KERN_ERR
"%s: bt819_attach: init status %d
\n
"
,
decoder
->
client
->
name
,
i
);
decoder
->
client
->
dev
.
name
,
i
);
}
else
{
}
else
{
printk
(
KERN_INFO
"%s: bt819_attach: chip version %x
\n
"
,
printk
(
KERN_INFO
"%s: bt819_attach: chip version %x
\n
"
,
decoder
->
client
->
name
,
i2c_smbus_read_byte_data
(
client
,
decoder
->
client
->
dev
.
name
,
i2c_smbus_read_byte_data
(
client
,
0x17
)
&
0x0f
);
0x17
)
&
0x0f
);
}
}
init_MUTEX
(
&
decoder
->
lock
);
init_MUTEX
(
&
decoder
->
lock
);
...
@@ -205,7 +206,7 @@ static int bt819_probe(struct i2c_adapter *adap)
...
@@ -205,7 +206,7 @@ static int bt819_probe(struct i2c_adapter *adap)
static
int
bt819_detach
(
struct
i2c_client
*
client
)
static
int
bt819_detach
(
struct
i2c_client
*
client
)
{
{
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
client
->
data
);
i2c_get_clientdata
(
client
);
kfree
(
client
);
kfree
(
client
);
MOD_DEC_USE_COUNT
;
MOD_DEC_USE_COUNT
;
return
0
;
return
0
;
...
@@ -215,7 +216,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -215,7 +216,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
{
{
int
temp
;
int
temp
;
struct
bt819
*
decoder
=
client
->
data
;
struct
bt819
*
decoder
=
i2c_get_clientdata
(
client
)
;
//return 0;
//return 0;
if
(
!
decoder
->
initialized
)
{
// First call to bt819_init could be
if
(
!
decoder
->
initialized
)
{
// First call to bt819_init could be
...
@@ -268,7 +269,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -268,7 +269,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
*
iarg
=
res
;
*
iarg
=
res
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: get status %x
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: get status %x
\n
"
,
decoder
->
client
->
name
,
*
iarg
));
decoder
->
client
->
dev
.
name
,
*
iarg
));
}
}
break
;
break
;
...
@@ -278,7 +279,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -278,7 +279,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
struct
timing
*
timing
;
struct
timing
*
timing
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set norm %x
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set norm %x
\n
"
,
decoder
->
client
->
name
,
*
iarg
));
decoder
->
client
->
dev
.
name
,
*
iarg
));
if
(
*
iarg
==
VIDEO_MODE_NTSC
)
{
if
(
*
iarg
==
VIDEO_MODE_NTSC
)
{
bt819_setbit
(
decoder
,
0x01
,
0
,
1
);
bt819_setbit
(
decoder
,
0x01
,
0
,
1
);
...
@@ -319,7 +320,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -319,7 +320,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
int
*
iarg
=
arg
;
int
*
iarg
=
arg
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set input %x
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set input %x
\n
"
,
decoder
->
client
->
name
,
*
iarg
));
decoder
->
client
->
dev
.
name
,
*
iarg
));
if
(
*
iarg
<
0
||
*
iarg
>
7
)
{
if
(
*
iarg
<
0
||
*
iarg
>
7
)
{
return
-
EINVAL
;
return
-
EINVAL
;
...
@@ -344,7 +345,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -344,7 +345,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
int
*
iarg
=
arg
;
int
*
iarg
=
arg
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set output %x
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: set output %x
\n
"
,
decoder
->
client
->
name
,
*
iarg
));
decoder
->
client
->
dev
.
name
,
*
iarg
));
/* not much choice of outputs */
/* not much choice of outputs */
if
(
*
iarg
!=
0
)
{
if
(
*
iarg
!=
0
)
{
...
@@ -360,7 +361,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -360,7 +361,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
DEBUG
(
printk
DEBUG
(
printk
(
KERN_INFO
"%s-bt819: enable output %x
\n
"
,
(
KERN_INFO
"%s-bt819: enable output %x
\n
"
,
decoder
->
client
->
name
,
*
iarg
));
decoder
->
client
->
dev
.
name
,
*
iarg
));
if
(
decoder
->
enable
!=
enable
)
{
if
(
decoder
->
enable
!=
enable
)
{
decoder
->
enable
=
enable
;
decoder
->
enable
=
enable
;
...
@@ -381,7 +382,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -381,7 +382,7 @@ static int bt819_command(struct i2c_client *client, unsigned int cmd, void *arg)
DEBUG
(
printk
DEBUG
(
printk
(
KERN_INFO
(
KERN_INFO
"%s-bt819: set picture brightness %d contrast %d colour %d
\n
"
,
"%s-bt819: set picture brightness %d contrast %d colour %d
\n
"
,
decoder
->
client
->
name
,
pic
->
brightness
,
decoder
->
client
->
dev
.
name
,
pic
->
brightness
,
pic
->
contrast
,
pic
->
colour
));
pic
->
contrast
,
pic
->
colour
));
...
@@ -448,9 +449,11 @@ static struct i2c_driver i2c_driver_bt819 = {
...
@@ -448,9 +449,11 @@ static struct i2c_driver i2c_driver_bt819 = {
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"bt819_client"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_bt819
.
driver
=
&
i2c_driver_bt819
,
.
dev
=
{
.
name
=
"bt819_client"
,
},
};
};
static
int
bt819_setup
(
void
)
static
int
bt819_setup
(
void
)
...
...
drivers/media/video/bt856.c
View file @
0c950d69
...
@@ -106,6 +106,7 @@ static int bt856_attach(struct i2c_adapter *adap, int addr , unsigned long flags
...
@@ -106,6 +106,7 @@ static int bt856_attach(struct i2c_adapter *adap, int addr , unsigned long flags
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
...
@@ -123,14 +124,14 @@ static int bt856_attach(struct i2c_adapter *adap, int addr , unsigned long flags
...
@@ -123,14 +124,14 @@ static int bt856_attach(struct i2c_adapter *adap, int addr , unsigned long flags
memset
(
encoder
,
0
,
sizeof
(
struct
bt856
));
memset
(
encoder
,
0
,
sizeof
(
struct
bt856
));
str
cpy
(
client
->
name
,
"bt856"
);
str
ncpy
(
client
->
dev
.
name
,
"bt856"
,
DEVICE_NAME_SIZE
);
encoder
->
client
=
client
;
encoder
->
client
=
client
;
client
->
data
=
encoder
;
i2c_set_clientdata
(
client
,
encoder
)
;
encoder
->
addr
=
client
->
addr
;
encoder
->
addr
=
client
->
addr
;
encoder
->
norm
=
VIDEO_MODE_NTSC
;
encoder
->
norm
=
VIDEO_MODE_NTSC
;
encoder
->
enable
=
1
;
encoder
->
enable
=
1
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: attach
\n
"
,
encoder
->
client
->
name
));
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: attach
\n
"
,
encoder
->
client
->
dev
.
name
));
i2c_smbus_write_byte_data
(
client
,
0xdc
,
0x18
);
i2c_smbus_write_byte_data
(
client
,
0xdc
,
0x18
);
encoder
->
reg
[
0xdc
]
=
0x18
;
encoder
->
reg
[
0xdc
]
=
0x18
;
...
@@ -171,7 +172,7 @@ static int bt856_probe(struct i2c_adapter *adap)
...
@@ -171,7 +172,7 @@ static int bt856_probe(struct i2c_adapter *adap)
static
int
bt856_detach
(
struct
i2c_client
*
client
)
static
int
bt856_detach
(
struct
i2c_client
*
client
)
{
{
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
client
->
data
);
i2c_get_clientdata
(
client
);
kfree
(
client
);
kfree
(
client
);
MOD_DEC_USE_COUNT
;
MOD_DEC_USE_COUNT
;
return
0
;
return
0
;
...
@@ -180,7 +181,7 @@ static int bt856_detach(struct i2c_client *client)
...
@@ -180,7 +181,7 @@ static int bt856_detach(struct i2c_client *client)
static
int
bt856_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
static
int
bt856_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
void
*
arg
)
{
{
struct
bt856
*
encoder
=
client
->
data
;
struct
bt856
*
encoder
=
i2c_get_clientdata
(
client
)
;
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -190,7 +191,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
...
@@ -190,7 +191,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
DEBUG
(
printk
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: get capabilities
\n
"
,
(
KERN_INFO
"%s-bt856: get capabilities
\n
"
,
encoder
->
client
->
name
));
encoder
->
client
->
dev
.
name
));
cap
->
flags
cap
->
flags
=
VIDEO_ENCODER_PAL
=
VIDEO_ENCODER_PAL
...
@@ -205,7 +206,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
...
@@ -205,7 +206,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
int
*
iarg
=
arg
;
int
*
iarg
=
arg
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set norm %d
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set norm %d
\n
"
,
encoder
->
client
->
name
,
*
iarg
));
encoder
->
client
->
dev
.
name
,
*
iarg
));
switch
(
*
iarg
)
{
switch
(
*
iarg
)
{
...
@@ -232,7 +233,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
...
@@ -232,7 +233,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
int
*
iarg
=
arg
;
int
*
iarg
=
arg
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set input %d
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set input %d
\n
"
,
encoder
->
client
->
name
,
*
iarg
));
encoder
->
client
->
dev
.
name
,
*
iarg
));
/* We only have video bus.
/* We only have video bus.
*iarg = 0: input is from bt819
*iarg = 0: input is from bt819
...
@@ -268,7 +269,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
...
@@ -268,7 +269,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
int
*
iarg
=
arg
;
int
*
iarg
=
arg
;
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set output %d
\n
"
,
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: set output %d
\n
"
,
encoder
->
client
->
name
,
*
iarg
));
encoder
->
client
->
dev
.
name
,
*
iarg
));
/* not much choice of outputs */
/* not much choice of outputs */
if
(
*
iarg
!=
0
)
{
if
(
*
iarg
!=
0
)
{
...
@@ -285,7 +286,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
...
@@ -285,7 +286,7 @@ static int bt856_command(struct i2c_client *client, unsigned int cmd,
DEBUG
(
printk
DEBUG
(
printk
(
KERN_INFO
"%s-bt856: enable output %d
\n
"
,
(
KERN_INFO
"%s-bt856: enable output %d
\n
"
,
encoder
->
client
->
name
,
encoder
->
enable
));
encoder
->
client
->
dev
.
name
,
encoder
->
enable
));
}
}
break
;
break
;
...
@@ -309,9 +310,11 @@ static struct i2c_driver i2c_driver_bt856 = {
...
@@ -309,9 +310,11 @@ static struct i2c_driver i2c_driver_bt856 = {
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"bt856_client"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_bt856
.
driver
=
&
i2c_driver_bt856
,
.
dev
=
{
.
name
=
"bt856_client"
,
},
};
};
static
int
bt856_init
(
void
)
static
int
bt856_init
(
void
)
...
...
drivers/media/video/bttv-if.c
View file @
0c950d69
...
@@ -194,7 +194,7 @@ static int bttv_bit_getsda(void *data)
...
@@ -194,7 +194,7 @@ static int bttv_bit_getsda(void *data)
static
int
attach_inform
(
struct
i2c_client
*
client
)
static
int
attach_inform
(
struct
i2c_client
*
client
)
{
{
struct
bttv
*
btv
=
(
struct
bttv
*
)
client
->
adapter
->
data
;
struct
bttv
*
btv
=
i2c_get_adapdata
(
client
->
adapter
)
;
int
i
;
int
i
;
for
(
i
=
0
;
i
<
I2C_CLIENTS_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
I2C_CLIENTS_MAX
;
i
++
)
{
...
@@ -207,13 +207,13 @@ static int attach_inform(struct i2c_client *client)
...
@@ -207,13 +207,13 @@ static int attach_inform(struct i2c_client *client)
bttv_call_i2c_clients
(
btv
,
TUNER_SET_TYPE
,
&
btv
->
tuner_type
);
bttv_call_i2c_clients
(
btv
,
TUNER_SET_TYPE
,
&
btv
->
tuner_type
);
if
(
bttv_verbose
)
if
(
bttv_verbose
)
printk
(
"bttv%d: i2c attach [client=%s,%s]
\n
"
,
btv
->
nr
,
printk
(
"bttv%d: i2c attach [client=%s,%s]
\n
"
,
btv
->
nr
,
client
->
name
,
(
i
<
I2C_CLIENTS_MAX
)
?
"ok"
:
"failed"
);
client
->
dev
.
name
,
(
i
<
I2C_CLIENTS_MAX
)
?
"ok"
:
"failed"
);
return
0
;
return
0
;
}
}
static
int
detach_inform
(
struct
i2c_client
*
client
)
static
int
detach_inform
(
struct
i2c_client
*
client
)
{
{
struct
bttv
*
btv
=
(
struct
bttv
*
)
client
->
adapter
->
data
;
struct
bttv
*
btv
=
i2c_get_adapdata
(
client
->
adapter
)
;
int
i
;
int
i
;
for
(
i
=
0
;
i
<
I2C_CLIENTS_MAX
;
i
++
)
{
for
(
i
=
0
;
i
<
I2C_CLIENTS_MAX
;
i
++
)
{
...
@@ -224,7 +224,7 @@ static int detach_inform(struct i2c_client *client)
...
@@ -224,7 +224,7 @@ static int detach_inform(struct i2c_client *client)
}
}
if
(
bttv_verbose
)
if
(
bttv_verbose
)
printk
(
"bttv%d: i2c detach [client=%s,%s]
\n
"
,
btv
->
nr
,
printk
(
"bttv%d: i2c detach [client=%s,%s]
\n
"
,
btv
->
nr
,
client
->
name
,
(
i
<
I2C_CLIENTS_MAX
)
?
"ok"
:
"failed"
);
client
->
dev
.
name
,
(
i
<
I2C_CLIENTS_MAX
)
?
"ok"
:
"failed"
);
return
0
;
return
0
;
}
}
...
@@ -261,15 +261,19 @@ static struct i2c_algo_bit_data bttv_i2c_algo_template = {
...
@@ -261,15 +261,19 @@ static struct i2c_algo_bit_data bttv_i2c_algo_template = {
static
struct
i2c_adapter
bttv_i2c_adap_template
=
{
static
struct
i2c_adapter
bttv_i2c_adap_template
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"bt848"
,
.
id
=
I2C_HW_B_BT848
,
.
id
=
I2C_HW_B_BT848
,
.
client_register
=
attach_inform
,
.
client_register
=
attach_inform
,
.
client_unregister
=
detach_inform
,
.
client_unregister
=
detach_inform
,
.
dev
=
{
.
name
=
"bt848"
,
},
};
};
static
struct
i2c_client
bttv_i2c_client_template
=
{
static
struct
i2c_client
bttv_i2c_client_template
=
{
.
name
=
"bttv internal use only"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
dev
=
{
.
name
=
"bttv internal"
,
},
};
};
...
@@ -343,10 +347,10 @@ int __devinit init_bttv_i2c(struct bttv *btv)
...
@@ -343,10 +347,10 @@ int __devinit init_bttv_i2c(struct bttv *btv)
memcpy
(
&
btv
->
i2c_client
,
&
bttv_i2c_client_template
,
memcpy
(
&
btv
->
i2c_client
,
&
bttv_i2c_client_template
,
sizeof
(
struct
i2c_client
));
sizeof
(
struct
i2c_client
));
sprintf
(
btv
->
i2c_adap
.
name
+
strlen
(
btv
->
i2c_adap
.
name
),
sprintf
(
btv
->
i2c_adap
.
dev
.
name
+
strlen
(
btv
->
i2c_adap
.
dev
.
name
),
" #%d"
,
btv
->
nr
);
" #%d"
,
btv
->
nr
);
btv
->
i2c_algo
.
data
=
btv
;
btv
->
i2c_algo
.
data
=
btv
;
btv
->
i2c_adap
.
data
=
btv
;
i2c_set_adapdata
(
&
btv
->
i2c_adap
,
btv
)
;
btv
->
i2c_adap
.
algo_data
=
&
btv
->
i2c_algo
;
btv
->
i2c_adap
.
algo_data
=
&
btv
->
i2c_algo
;
btv
->
i2c_client
.
adapter
=
&
btv
->
i2c_adap
;
btv
->
i2c_client
.
adapter
=
&
btv
->
i2c_adap
;
...
...
drivers/media/video/msp3400.c
View file @
0c950d69
...
@@ -349,7 +349,7 @@ static char *scart_names[] = {
...
@@ -349,7 +349,7 @@ static char *scart_names[] = {
static
void
static
void
msp3400c_set_scart
(
struct
i2c_client
*
client
,
int
in
,
int
out
)
msp3400c_set_scart
(
struct
i2c_client
*
client
,
int
in
,
int
out
)
{
{
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
if
(
-
1
==
scarts
[
out
][
in
])
if
(
-
1
==
scarts
[
out
][
in
])
return
;
return
;
...
@@ -411,7 +411,7 @@ static void msp3400c_settreble(struct i2c_client *client, int treble)
...
@@ -411,7 +411,7 @@ static void msp3400c_settreble(struct i2c_client *client, int treble)
static
void
msp3400c_setmode
(
struct
i2c_client
*
client
,
int
type
)
static
void
msp3400c_setmode
(
struct
i2c_client
*
client
,
int
type
)
{
{
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
i
;
int
i
;
dprintk
(
"msp3400: setmode: %d
\n
"
,
type
);
dprintk
(
"msp3400: setmode: %d
\n
"
,
type
);
...
@@ -471,7 +471,7 @@ static void msp3400c_setstereo(struct i2c_client *client, int mode)
...
@@ -471,7 +471,7 @@ static void msp3400c_setstereo(struct i2c_client *client, int mode)
{
{
static
char
*
strmode
[]
=
{
"0"
,
"mono"
,
"stereo"
,
"3"
,
static
char
*
strmode
[]
=
{
"0"
,
"mono"
,
"stereo"
,
"3"
,
"lang1"
,
"5"
,
"6"
,
"7"
,
"lang2"
};
"lang1"
,
"5"
,
"6"
,
"7"
,
"lang2"
};
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
nicam
=
0
;
/* channel source: FM/AM or nicam */
int
nicam
=
0
;
/* channel source: FM/AM or nicam */
int
src
=
0
;
int
src
=
0
;
...
@@ -599,7 +599,7 @@ msp3400c_print_mode(struct msp3400c *msp)
...
@@ -599,7 +599,7 @@ msp3400c_print_mode(struct msp3400c *msp)
static
void
static
void
msp3400c_restore_dfp
(
struct
i2c_client
*
client
)
msp3400c_restore_dfp
(
struct
i2c_client
*
client
)
{
{
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
i
;
int
i
;
for
(
i
=
0
;
i
<
DFP_COUNT
;
i
++
)
{
for
(
i
=
0
;
i
<
DFP_COUNT
;
i
++
)
{
...
@@ -627,7 +627,7 @@ struct REGISTER_DUMP d1[] = {
...
@@ -627,7 +627,7 @@ struct REGISTER_DUMP d1[] = {
static
int
static
int
autodetect_stereo
(
struct
i2c_client
*
client
)
autodetect_stereo
(
struct
i2c_client
*
client
)
{
{
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
val
;
int
val
;
int
newstereo
=
msp
->
stereo
;
int
newstereo
=
msp
->
stereo
;
int
newnicam
=
msp
->
nicam_on
;
int
newnicam
=
msp
->
nicam_on
;
...
@@ -727,7 +727,7 @@ static void msp3400c_stereo_wake(unsigned long data)
...
@@ -727,7 +727,7 @@ static void msp3400c_stereo_wake(unsigned long data)
/* stereo/multilang monitoring */
/* stereo/multilang monitoring */
static
void
watch_stereo
(
struct
i2c_client
*
client
)
static
void
watch_stereo
(
struct
i2c_client
*
client
)
{
{
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
if
(
autodetect_stereo
(
client
))
{
if
(
autodetect_stereo
(
client
))
{
if
(
msp
->
stereo
&
VIDEO_SOUND_STEREO
)
if
(
msp
->
stereo
&
VIDEO_SOUND_STEREO
)
...
@@ -746,7 +746,7 @@ static void watch_stereo(struct i2c_client *client)
...
@@ -746,7 +746,7 @@ static void watch_stereo(struct i2c_client *client)
static
int
msp3400c_thread
(
void
*
data
)
static
int
msp3400c_thread
(
void
*
data
)
{
{
struct
i2c_client
*
client
=
data
;
struct
i2c_client
*
client
=
data
;
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
struct
CARRIER_DETECT
*
cd
;
struct
CARRIER_DETECT
*
cd
;
int
count
,
max1
,
max2
,
val1
,
val2
,
val
,
this
;
int
count
,
max1
,
max2
,
val1
,
val2
,
val
,
this
;
...
@@ -1002,7 +1002,7 @@ static struct MODES {
...
@@ -1002,7 +1002,7 @@ static struct MODES {
static
int
msp3410d_thread
(
void
*
data
)
static
int
msp3410d_thread
(
void
*
data
)
{
{
struct
i2c_client
*
client
=
data
;
struct
i2c_client
*
client
=
data
;
struct
msp3400c
*
msp
=
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
mode
,
val
,
i
,
std
;
int
mode
,
val
,
i
,
std
;
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
...
@@ -1226,9 +1226,11 @@ static struct i2c_driver driver = {
...
@@ -1226,9 +1226,11 @@ static struct i2c_driver driver = {
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"(unset)"
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"(unset)"
,
},
};
};
static
int
msp_attach
(
struct
i2c_adapter
*
adap
,
int
addr
,
static
int
msp_attach
(
struct
i2c_adapter
*
adap
,
int
addr
,
...
@@ -1265,7 +1267,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
...
@@ -1265,7 +1267,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
for
(
i
=
0
;
i
<
DFP_COUNT
;
i
++
)
for
(
i
=
0
;
i
<
DFP_COUNT
;
i
++
)
msp
->
dfp_regs
[
i
]
=
-
1
;
msp
->
dfp_regs
[
i
]
=
-
1
;
c
->
data
=
msp
;
i2c_set_clientdata
(
c
,
msp
)
;
init_waitqueue_head
(
&
msp
->
wq
);
init_waitqueue_head
(
&
msp
->
wq
);
if
(
-
1
==
msp3400c_reset
(
c
))
{
if
(
-
1
==
msp3400c_reset
(
c
))
{
...
@@ -1291,7 +1293,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
...
@@ -1291,7 +1293,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
#endif
#endif
msp3400c_setvolume
(
c
,
msp
->
muted
,
msp
->
left
,
msp
->
right
);
msp3400c_setvolume
(
c
,
msp
->
muted
,
msp
->
left
,
msp
->
right
);
s
printf
(
c
->
name
,
"MSP34%02d%c-%c%d"
,
s
nprintf
(
c
->
dev
.
name
,
DEVICE_NAME_SIZE
,
"MSP34%02d%c-%c%d"
,
(
rev2
>>
8
)
&
0xff
,
(
rev1
&
0xff
)
+
'@'
,
((
rev1
>>
8
)
&
0xff
)
+
'@'
,
rev2
&
0x1f
);
(
rev2
>>
8
)
&
0xff
,
(
rev1
&
0xff
)
+
'@'
,
((
rev1
>>
8
)
&
0xff
)
+
'@'
,
rev2
&
0x1f
);
msp
->
nicam
=
(((
rev2
>>
8
)
&
0xff
)
!=
00
)
?
1
:
0
;
msp
->
nicam
=
(((
rev2
>>
8
)
&
0xff
)
!=
00
)
?
1
:
0
;
...
@@ -1310,7 +1312,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
...
@@ -1310,7 +1312,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
msp
->
wake_stereo
.
data
=
(
unsigned
long
)
msp
;
msp
->
wake_stereo
.
data
=
(
unsigned
long
)
msp
;
/* hello world :-) */
/* hello world :-) */
printk
(
KERN_INFO
"msp34xx: init: chip=%s"
,
c
->
name
);
printk
(
KERN_INFO
"msp34xx: init: chip=%s"
,
c
->
dev
.
name
);
if
(
msp
->
nicam
)
if
(
msp
->
nicam
)
printk
(
", has NICAM support"
);
printk
(
", has NICAM support"
);
printk
(
"
\n
"
);
printk
(
"
\n
"
);
...
@@ -1340,7 +1342,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
...
@@ -1340,7 +1342,7 @@ static int msp_attach(struct i2c_adapter *adap, int addr,
static
int
msp_detach
(
struct
i2c_client
*
client
)
static
int
msp_detach
(
struct
i2c_client
*
client
)
{
{
DECLARE_MUTEX_LOCKED
(
sem
);
DECLARE_MUTEX_LOCKED
(
sem
);
struct
msp3400c
*
msp
=
(
struct
msp3400c
*
)
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
int
i
;
int
i
;
/* shutdown control thread */
/* shutdown control thread */
...
@@ -1379,7 +1381,7 @@ static int msp_probe(struct i2c_adapter *adap)
...
@@ -1379,7 +1381,7 @@ static int msp_probe(struct i2c_adapter *adap)
static
void
msp_wake_thread
(
struct
i2c_client
*
client
)
static
void
msp_wake_thread
(
struct
i2c_client
*
client
)
{
{
struct
msp3400c
*
msp
=
(
struct
msp3400c
*
)
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
msp3400c_setvolume
(
client
,
msp
->
muted
,
0
,
0
);
msp3400c_setvolume
(
client
,
msp
->
muted
,
0
,
0
);
msp
->
watch_stereo
=
0
;
msp
->
watch_stereo
=
0
;
...
@@ -1391,7 +1393,7 @@ static void msp_wake_thread(struct i2c_client *client)
...
@@ -1391,7 +1393,7 @@ static void msp_wake_thread(struct i2c_client *client)
static
int
msp_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
static
int
msp_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
msp3400c
*
msp
=
(
struct
msp3400c
*
)
client
->
data
;
struct
msp3400c
*
msp
=
i2c_get_clientdata
(
client
)
;
__u16
*
sarg
=
arg
;
__u16
*
sarg
=
arg
;
#if 0
#if 0
int *iarg = (int*)arg;
int *iarg = (int*)arg;
...
...
drivers/media/video/saa5249.c
View file @
0c950d69
...
@@ -171,20 +171,21 @@ static int saa5249_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -171,20 +171,21 @@ static int saa5249_attach(struct i2c_adapter *adap, int addr, unsigned short fla
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
memset
(
t
,
0
,
sizeof
(
*
t
));
memset
(
t
,
0
,
sizeof
(
*
t
));
str
cpy
(
client
->
name
,
IF_NAM
E
);
str
ncpy
(
client
->
dev
.
name
,
IF_NAME
,
DEVICE_NAME_SIZ
E
);
init_MUTEX
(
&
t
->
lock
);
init_MUTEX
(
&
t
->
lock
);
/*
/*
* Now create a video4linux device
* Now create a video4linux device
*/
*/
client
->
data
=
vd
=
(
struct
video_device
*
)
kmalloc
(
sizeof
(
struct
video_device
),
GFP_KERNEL
);
vd
=
(
struct
video_device
*
)
kmalloc
(
sizeof
(
struct
video_device
),
GFP_KERNEL
);
if
(
vd
==
NULL
)
if
(
vd
==
NULL
)
{
{
kfree
(
t
);
kfree
(
t
);
kfree
(
client
);
kfree
(
client
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
i2c_set_clientdata
(
client
,
vd
);
memcpy
(
vd
,
&
saa_template
,
sizeof
(
*
vd
));
memcpy
(
vd
,
&
saa_template
,
sizeof
(
*
vd
));
for
(
pgbuf
=
0
;
pgbuf
<
NUM_DAUS
;
pgbuf
++
)
for
(
pgbuf
=
0
;
pgbuf
<
NUM_DAUS
;
pgbuf
++
)
...
@@ -234,7 +235,7 @@ static int saa5249_probe(struct i2c_adapter *adap)
...
@@ -234,7 +235,7 @@ static int saa5249_probe(struct i2c_adapter *adap)
static
int
saa5249_detach
(
struct
i2c_client
*
client
)
static
int
saa5249_detach
(
struct
i2c_client
*
client
)
{
{
struct
video_device
*
vd
=
client
->
data
;
struct
video_device
*
vd
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
video_unregister_device
(
vd
);
video_unregister_device
(
vd
);
kfree
(
vd
->
priv
);
kfree
(
vd
->
priv
);
...
@@ -264,9 +265,11 @@ static struct i2c_driver i2c_driver_videotext =
...
@@ -264,9 +265,11 @@ static struct i2c_driver i2c_driver_videotext =
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"(unset)"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_videotext
.
driver
=
&
i2c_driver_videotext
,
.
dev
=
{
.
name
=
"(unset)"
,
},
};
};
/*
/*
...
...
drivers/media/video/saa7110.c
View file @
0c950d69
...
@@ -163,6 +163,7 @@ static const unsigned char initseq[] = {
...
@@ -163,6 +163,7 @@ static const unsigned char initseq[] = {
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
...
@@ -175,9 +176,9 @@ static const unsigned char initseq[] = {
...
@@ -175,9 +176,9 @@ static const unsigned char initseq[] = {
/* clear our private data */
/* clear our private data */
memset
(
decoder
,
0
,
sizeof
(
*
decoder
));
memset
(
decoder
,
0
,
sizeof
(
*
decoder
));
str
cpy
(
client
->
name
,
IF_NAM
E
);
str
ncpy
(
client
->
dev
.
name
,
IF_NAME
,
DEVICE_NAME_SIZ
E
);
decoder
->
client
=
client
;
decoder
->
client
=
client
;
client
->
data
=
decoder
;
i2c_set_clientdata
(
client
,
decoder
)
;
decoder
->
addr
=
addr
;
decoder
->
addr
=
addr
;
decoder
->
norm
=
VIDEO_MODE_PAL
;
decoder
->
norm
=
VIDEO_MODE_PAL
;
decoder
->
input
=
0
;
decoder
->
input
=
0
;
...
@@ -189,7 +190,7 @@ static const unsigned char initseq[] = {
...
@@ -189,7 +190,7 @@ static const unsigned char initseq[] = {
rv
=
i2c_master_send
(
client
,
initseq
,
sizeof
(
initseq
));
rv
=
i2c_master_send
(
client
,
initseq
,
sizeof
(
initseq
));
if
(
rv
<
0
)
if
(
rv
<
0
)
printk
(
KERN_ERR
"%s_attach: init status %d
\n
"
,
client
->
name
,
rv
);
printk
(
KERN_ERR
"%s_attach: init status %d
\n
"
,
client
->
dev
.
name
,
rv
);
else
{
else
{
i2c_smbus_write_byte_data
(
client
,
0x21
,
0x16
);
i2c_smbus_write_byte_data
(
client
,
0x21
,
0x16
);
i2c_smbus_write_byte_data
(
client
,
0x0D
,
0x04
);
i2c_smbus_write_byte_data
(
client
,
0x0D
,
0x04
);
...
@@ -213,7 +214,7 @@ int saa7110_probe(struct i2c_adapter *adap)
...
@@ -213,7 +214,7 @@ int saa7110_probe(struct i2c_adapter *adap)
static
static
int
saa7110_detach
(
struct
i2c_client
*
client
)
int
saa7110_detach
(
struct
i2c_client
*
client
)
{
{
struct
saa7110
*
decoder
=
client
->
data
;
struct
saa7110
*
decoder
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
...
@@ -232,7 +233,7 @@ int saa7110_detach(struct i2c_client *client)
...
@@ -232,7 +233,7 @@ int saa7110_detach(struct i2c_client *client)
static
static
int
saa7110_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
int
saa7110_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
saa7110
*
decoder
=
client
->
data
;
struct
saa7110
*
decoder
=
i2c_get_clientdata
(
client
)
;
int
v
;
int
v
;
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -251,7 +252,7 @@ int saa7110_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -251,7 +252,7 @@ int saa7110_command(struct i2c_client *client, unsigned int cmd, void *arg)
case
DECODER_GET_STATUS
:
case
DECODER_GET_STATUS
:
{
{
struct
saa7110
*
decoder
=
client
->
data
;
struct
saa7110
*
decoder
=
i2c_get_clientdata
(
client
)
;
int
status
;
int
status
;
int
res
=
0
;
int
res
=
0
;
...
@@ -390,9 +391,11 @@ static struct i2c_driver i2c_driver_saa7110 =
...
@@ -390,9 +391,11 @@ static struct i2c_driver i2c_driver_saa7110 =
.
command
=
saa7110_command
.
command
=
saa7110_command
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"saa7110_client"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_saa7110
.
driver
=
&
i2c_driver_saa7110
,
.
dev
=
{
.
name
=
"saa7110_client"
,
},
};
};
static
int
saa7110_init
(
void
)
static
int
saa7110_init
(
void
)
...
...
drivers/media/video/saa7111.c
View file @
0c950d69
...
@@ -120,6 +120,7 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -120,6 +120,7 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
...
@@ -132,9 +133,9 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -132,9 +133,9 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
}
}
memset
(
decoder
,
0
,
sizeof
(
*
decoder
));
memset
(
decoder
,
0
,
sizeof
(
*
decoder
));
str
cpy
(
client
->
name
,
"saa7111"
);
str
ncpy
(
client
->
dev
.
name
,
"saa7111"
,
DEVICE_NAME_SIZE
);
decoder
->
client
=
client
;
decoder
->
client
=
client
;
client
->
data
=
decoder
;
i2c_set_clientdata
(
client
,
decoder
)
;
decoder
->
addr
=
addr
;
decoder
->
addr
=
addr
;
decoder
->
norm
=
VIDEO_MODE_NTSC
;
decoder
->
norm
=
VIDEO_MODE_NTSC
;
decoder
->
input
=
0
;
decoder
->
input
=
0
;
...
@@ -147,10 +148,10 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -147,10 +148,10 @@ static int saa7111_attach(struct i2c_adapter *adap, int addr, unsigned short fla
i
=
i2c_master_send
(
client
,
init
,
sizeof
(
init
));
i
=
i2c_master_send
(
client
,
init
,
sizeof
(
init
));
if
(
i
<
0
)
{
if
(
i
<
0
)
{
printk
(
KERN_ERR
"%s_attach: init status %d
\n
"
,
printk
(
KERN_ERR
"%s_attach: init status %d
\n
"
,
client
->
name
,
i
);
client
->
dev
.
name
,
i
);
}
else
{
}
else
{
printk
(
KERN_INFO
"%s_attach: chip version %x
\n
"
,
printk
(
KERN_INFO
"%s_attach: chip version %x
\n
"
,
client
->
name
,
i2c_smbus_read_byte_data
(
client
,
0x00
)
>>
4
);
client
->
dev
.
name
,
i2c_smbus_read_byte_data
(
client
,
0x00
)
>>
4
);
}
}
init_MUTEX
(
&
decoder
->
lock
);
init_MUTEX
(
&
decoder
->
lock
);
i2c_attach_client
(
client
);
i2c_attach_client
(
client
);
...
@@ -164,7 +165,7 @@ static int saa7111_probe(struct i2c_adapter *adap)
...
@@ -164,7 +165,7 @@ static int saa7111_probe(struct i2c_adapter *adap)
static
int
saa7111_detach
(
struct
i2c_client
*
client
)
static
int
saa7111_detach
(
struct
i2c_client
*
client
)
{
{
struct
saa7111
*
decoder
=
client
->
data
;
struct
saa7111
*
decoder
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
decoder
);
kfree
(
decoder
);
kfree
(
client
);
kfree
(
client
);
...
@@ -175,7 +176,7 @@ static int saa7111_detach(struct i2c_client *client)
...
@@ -175,7 +176,7 @@ static int saa7111_detach(struct i2c_client *client)
static
int
saa7111_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
static
int
saa7111_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
void
*
arg
)
{
{
struct
saa7111
*
decoder
=
client
->
data
;
struct
saa7111
*
decoder
=
i2c_get_clientdata
(
client
)
;
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -187,7 +188,7 @@ static int saa7111_command(struct i2c_client *client, unsigned int cmd,
...
@@ -187,7 +188,7 @@ static int saa7111_command(struct i2c_client *client, unsigned int cmd,
for
(
i
=
0
;
i
<
32
;
i
+=
16
)
{
for
(
i
=
0
;
i
<
32
;
i
+=
16
)
{
int
j
;
int
j
;
printk
(
"KERN_DEBUG %s: %03x"
,
client
->
name
,
printk
(
"KERN_DEBUG %s: %03x"
,
client
->
dev
.
name
,
i
);
i
);
for
(
j
=
0
;
j
<
16
;
++
j
)
{
for
(
j
=
0
;
j
<
16
;
++
j
)
{
printk
(
" %02x"
,
printk
(
" %02x"
,
...
@@ -407,9 +408,11 @@ static struct i2c_driver i2c_driver_saa7111 = {
...
@@ -407,9 +408,11 @@ static struct i2c_driver i2c_driver_saa7111 = {
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"saa7111_client"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_saa7111
.
driver
=
&
i2c_driver_saa7111
,
.
dev
=
{
.
name
=
"saa7111_client"
,
},
};
};
static
int
saa7111_init
(
void
)
static
int
saa7111_init
(
void
)
...
...
drivers/media/video/saa7134/saa7134-i2c.c
View file @
0c950d69
...
@@ -334,15 +334,19 @@ static struct i2c_algorithm saa7134_algo = {
...
@@ -334,15 +334,19 @@ static struct i2c_algorithm saa7134_algo = {
static
struct
i2c_adapter
saa7134_adap_template
=
{
static
struct
i2c_adapter
saa7134_adap_template
=
{
.
owner
=
THIS_MODULE
,
.
owner
=
THIS_MODULE
,
.
name
=
"saa7134"
,
.
id
=
I2C_ALGO_SAA7134
,
.
id
=
I2C_ALGO_SAA7134
,
.
algo
=
&
saa7134_algo
,
.
algo
=
&
saa7134_algo
,
.
client_register
=
attach_inform
,
.
client_register
=
attach_inform
,
.
dev
=
{
.
name
=
"saa7134"
,
},
};
};
static
struct
i2c_client
saa7134_client_template
=
{
static
struct
i2c_client
saa7134_client_template
=
{
.
name
=
"saa7134 internal"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
dev
=
{
.
name
=
"saa7134 internal"
,
},
};
};
/* ----------------------------------------------------------- */
/* ----------------------------------------------------------- */
...
@@ -410,7 +414,7 @@ void saa7134_i2c_call_clients(struct saa7134_dev *dev,
...
@@ -410,7 +414,7 @@ void saa7134_i2c_call_clients(struct saa7134_dev *dev,
int
saa7134_i2c_register
(
struct
saa7134_dev
*
dev
)
int
saa7134_i2c_register
(
struct
saa7134_dev
*
dev
)
{
{
dev
->
i2c_adap
=
saa7134_adap_template
;
dev
->
i2c_adap
=
saa7134_adap_template
;
str
cpy
(
dev
->
i2c_adap
.
name
,
dev
->
name
);
str
ncpy
(
dev
->
i2c_adap
.
dev
.
name
,
dev
->
name
,
DEVICE_NAME_SIZE
);
dev
->
i2c_adap
.
algo_data
=
dev
;
dev
->
i2c_adap
.
algo_data
=
dev
;
i2c_add_adapter
(
&
dev
->
i2c_adap
);
i2c_add_adapter
(
&
dev
->
i2c_adap
);
...
...
drivers/media/video/saa7185.c
View file @
0c950d69
...
@@ -191,6 +191,7 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -191,6 +191,7 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
client
=
kmalloc
(
sizeof
(
*
client
),
GFP_KERNEL
);
if
(
client
==
NULL
)
if
(
client
==
NULL
)
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
client
,
0
,
sizeof
(
*
client
));
client_template
.
adapter
=
adap
;
client_template
.
adapter
=
adap
;
client_template
.
addr
=
addr
;
client_template
.
addr
=
addr
;
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
*
client
));
...
@@ -202,9 +203,9 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -202,9 +203,9 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
memset
(
encoder
,
0
,
sizeof
(
*
encoder
));
memset
(
encoder
,
0
,
sizeof
(
*
encoder
));
str
cpy
(
client
->
name
,
"saa7185"
);
str
ncpy
(
client
->
dev
.
name
,
"saa7185"
,
DEVICE_NAME_SIZE
);
encoder
->
client
=
client
;
encoder
->
client
=
client
;
client
->
data
=
encoder
;
i2c_set_clientdata
(
client
,
encoder
)
;
encoder
->
addr
=
addr
;
encoder
->
addr
=
addr
;
encoder
->
norm
=
VIDEO_MODE_NTSC
;
encoder
->
norm
=
VIDEO_MODE_NTSC
;
encoder
->
enable
=
1
;
encoder
->
enable
=
1
;
...
@@ -215,11 +216,11 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
...
@@ -215,11 +216,11 @@ static int saa7185_attach(struct i2c_adapter *adap, int addr, unsigned short fla
sizeof
(
init_ntsc
));
sizeof
(
init_ntsc
));
}
}
if
(
i
<
0
)
{
if
(
i
<
0
)
{
printk
(
KERN_ERR
"%s_attach: init error %d
\n
"
,
client
->
name
,
printk
(
KERN_ERR
"%s_attach: init error %d
\n
"
,
client
->
dev
.
name
,
i
);
i
);
}
else
{
}
else
{
printk
(
KERN_INFO
"%s_attach: chip version %d
\n
"
,
printk
(
KERN_INFO
"%s_attach: chip version %d
\n
"
,
client
->
name
,
i2c_smbus_read_byte
(
client
)
>>
5
);
client
->
dev
.
name
,
i2c_smbus_read_byte
(
client
)
>>
5
);
}
}
init_MUTEX
(
&
encoder
->
lock
);
init_MUTEX
(
&
encoder
->
lock
);
i2c_attach_client
(
client
);
i2c_attach_client
(
client
);
...
@@ -233,7 +234,7 @@ static int saa7185_probe(struct i2c_adapter *adap)
...
@@ -233,7 +234,7 @@ static int saa7185_probe(struct i2c_adapter *adap)
static
int
saa7185_detach
(
struct
i2c_client
*
client
)
static
int
saa7185_detach
(
struct
i2c_client
*
client
)
{
{
struct
saa7185
*
encoder
=
client
->
data
;
struct
saa7185
*
encoder
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
i2c_smbus_write_byte_data
(
client
,
0x61
,
(
encoder
->
reg
[
0x61
])
|
0x40
);
/* SW: output off is active */
i2c_smbus_write_byte_data
(
client
,
0x61
,
(
encoder
->
reg
[
0x61
])
|
0x40
);
/* SW: output off is active */
//i2c_smbus_write_byte_data(client, 0x3a, (encoder->reg[0x3a]) | 0x80); /* SW: color bar */
//i2c_smbus_write_byte_data(client, 0x3a, (encoder->reg[0x3a]) | 0x80); /* SW: color bar */
...
@@ -246,7 +247,7 @@ static int saa7185_detach(struct i2c_client *client)
...
@@ -246,7 +247,7 @@ static int saa7185_detach(struct i2c_client *client)
static
int
saa7185_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
static
int
saa7185_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
void
*
arg
)
{
{
struct
saa7185
*
encoder
=
client
->
data
;
struct
saa7185
*
encoder
=
i2c_get_clientdata
(
client
)
;
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -365,9 +366,11 @@ static struct i2c_driver i2c_driver_saa7185 = {
...
@@ -365,9 +366,11 @@ static struct i2c_driver i2c_driver_saa7185 = {
};
};
static
struct
i2c_client
client_template
=
{
static
struct
i2c_client
client_template
=
{
.
name
=
"saa7185_client"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_saa7185
.
driver
=
&
i2c_driver_saa7185
,
.
dev
=
{
.
name
=
"saa7185_client"
,
},
};
};
static
int
saa7185_init
(
void
)
static
int
saa7185_init
(
void
)
...
...
drivers/media/video/tda7432.c
View file @
0c950d69
...
@@ -260,7 +260,7 @@ static int tda7432_read(struct i2c_client *client)
...
@@ -260,7 +260,7 @@ static int tda7432_read(struct i2c_client *client)
static
int
tda7432_set
(
struct
i2c_client
*
client
)
static
int
tda7432_set
(
struct
i2c_client
*
client
)
{
{
struct
tda7432
*
t
=
client
->
data
;
struct
tda7432
*
t
=
i2c_get_clientdata
(
client
)
;
unsigned
char
buf
[
16
];
unsigned
char
buf
[
16
];
d2printk
(
"tda7432: In tda7432_set
\n
"
);
d2printk
(
"tda7432: In tda7432_set
\n
"
);
...
@@ -287,7 +287,7 @@ static int tda7432_set(struct i2c_client *client)
...
@@ -287,7 +287,7 @@ static int tda7432_set(struct i2c_client *client)
static
void
do_tda7432_init
(
struct
i2c_client
*
client
)
static
void
do_tda7432_init
(
struct
i2c_client
*
client
)
{
{
struct
tda7432
*
t
=
client
->
data
;
struct
tda7432
*
t
=
i2c_get_clientdata
(
client
)
;
d2printk
(
"tda7432: In tda7432_init
\n
"
);
d2printk
(
"tda7432: In tda7432_init
\n
"
);
t
->
input
=
TDA7432_STEREO_IN
|
/* Main (stereo) input */
t
->
input
=
TDA7432_STEREO_IN
|
/* Main (stereo) input */
...
@@ -328,11 +328,11 @@ static int tda7432_attach(struct i2c_adapter *adap, int addr,
...
@@ -328,11 +328,11 @@ static int tda7432_attach(struct i2c_adapter *adap, int addr,
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
client
->
adapter
=
adap
;
client
->
adapter
=
adap
;
client
->
addr
=
addr
;
client
->
addr
=
addr
;
client
->
data
=
t
;
i2c_set_clientdata
(
client
,
t
)
;
do_tda7432_init
(
client
);
do_tda7432_init
(
client
);
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
str
cpy
(
client
->
name
,
"TDA7432"
);
str
ncpy
(
client
->
dev
.
name
,
"TDA7432"
,
DEVICE_NAME_SIZE
);
printk
(
KERN_INFO
"tda7432: init
\n
"
);
printk
(
KERN_INFO
"tda7432: init
\n
"
);
i2c_attach_client
(
client
);
i2c_attach_client
(
client
);
...
@@ -348,7 +348,7 @@ static int tda7432_probe(struct i2c_adapter *adap)
...
@@ -348,7 +348,7 @@ static int tda7432_probe(struct i2c_adapter *adap)
static
int
tda7432_detach
(
struct
i2c_client
*
client
)
static
int
tda7432_detach
(
struct
i2c_client
*
client
)
{
{
struct
tda7432
*
t
=
client
->
data
;
struct
tda7432
*
t
=
i2c_get_clientdata
(
client
)
;
do_tda7432_init
(
client
);
do_tda7432_init
(
client
);
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
...
@@ -361,7 +361,7 @@ static int tda7432_detach(struct i2c_client *client)
...
@@ -361,7 +361,7 @@ static int tda7432_detach(struct i2c_client *client)
static
int
tda7432_command
(
struct
i2c_client
*
client
,
static
int
tda7432_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
tda7432
*
t
=
client
->
data
;
struct
tda7432
*
t
=
i2c_get_clientdata
(
client
)
;
d2printk
(
"tda7432: In tda7432_command
\n
"
);
d2printk
(
"tda7432: In tda7432_command
\n
"
);
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -526,9 +526,11 @@ static struct i2c_driver driver = {
...
@@ -526,9 +526,11 @@ static struct i2c_driver driver = {
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"tda7432"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"tda7432"
,
},
};
};
static
int
tda7432_init
(
void
)
static
int
tda7432_init
(
void
)
...
...
drivers/media/video/tda9875.c
View file @
0c950d69
...
@@ -158,7 +158,7 @@ static int i2c_read_register(struct i2c_adapter *adap, int addr, int reg)
...
@@ -158,7 +158,7 @@ static int i2c_read_register(struct i2c_adapter *adap, int addr, int reg)
static
void
tda9875_set
(
struct
i2c_client
*
client
)
static
void
tda9875_set
(
struct
i2c_client
*
client
)
{
{
struct
tda9875
*
tda
=
client
->
data
;
struct
tda9875
*
tda
=
i2c_get_clientdata
(
client
)
;
unsigned
char
a
;
unsigned
char
a
;
dprintk
(
KERN_DEBUG
"tda9875_set(%04x,%04x,%04x,%04x)
\n
"
,
tda
->
lvol
,
tda
->
rvol
,
tda
->
bass
,
tda
->
treble
);
dprintk
(
KERN_DEBUG
"tda9875_set(%04x,%04x,%04x,%04x)
\n
"
,
tda
->
lvol
,
tda
->
rvol
,
tda
->
bass
,
tda
->
treble
);
...
@@ -176,7 +176,7 @@ static void tda9875_set(struct i2c_client *client)
...
@@ -176,7 +176,7 @@ static void tda9875_set(struct i2c_client *client)
static
void
do_tda9875_init
(
struct
i2c_client
*
client
)
static
void
do_tda9875_init
(
struct
i2c_client
*
client
)
{
{
struct
tda9875
*
t
=
client
->
data
;
struct
tda9875
*
t
=
i2c_get_clientdata
(
client
)
;
dprintk
(
"In tda9875_init
\n
"
);
dprintk
(
"In tda9875_init
\n
"
);
tda9875_write
(
client
,
TDA9875_CFG
,
0xd0
);
/*reg de config 0 (reset)*/
tda9875_write
(
client
,
TDA9875_CFG
,
0xd0
);
/*reg de config 0 (reset)*/
tda9875_write
(
client
,
TDA9875_MSR
,
0x03
);
/* Monitor 0b00000XXX*/
tda9875_write
(
client
,
TDA9875_MSR
,
0x03
);
/* Monitor 0b00000XXX*/
...
@@ -256,7 +256,7 @@ static int tda9875_attach(struct i2c_adapter *adap, int addr,
...
@@ -256,7 +256,7 @@ static int tda9875_attach(struct i2c_adapter *adap, int addr,
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
client
->
adapter
=
adap
;
client
->
adapter
=
adap
;
client
->
addr
=
addr
;
client
->
addr
=
addr
;
client
->
data
=
t
;
i2c_set_clientdata
(
client
,
t
)
;
if
(
!
tda9875_checkit
(
adap
,
addr
))
{
if
(
!
tda9875_checkit
(
adap
,
addr
))
{
kfree
(
t
);
kfree
(
t
);
...
@@ -265,7 +265,7 @@ static int tda9875_attach(struct i2c_adapter *adap, int addr,
...
@@ -265,7 +265,7 @@ static int tda9875_attach(struct i2c_adapter *adap, int addr,
do_tda9875_init
(
client
);
do_tda9875_init
(
client
);
MOD_INC_USE_COUNT
;
MOD_INC_USE_COUNT
;
str
cpy
(
client
->
name
,
"TDA9875"
);
str
ncpy
(
client
->
dev
.
name
,
"TDA9875"
,
DEVICE_NAME_SIZE
);
printk
(
KERN_INFO
"tda9875: init
\n
"
);
printk
(
KERN_INFO
"tda9875: init
\n
"
);
i2c_attach_client
(
client
);
i2c_attach_client
(
client
);
...
@@ -281,7 +281,7 @@ static int tda9875_probe(struct i2c_adapter *adap)
...
@@ -281,7 +281,7 @@ static int tda9875_probe(struct i2c_adapter *adap)
static
int
tda9875_detach
(
struct
i2c_client
*
client
)
static
int
tda9875_detach
(
struct
i2c_client
*
client
)
{
{
struct
tda9875
*
t
=
client
->
data
;
struct
tda9875
*
t
=
i2c_get_clientdata
(
client
)
;
do_tda9875_init
(
client
);
do_tda9875_init
(
client
);
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
...
@@ -294,7 +294,7 @@ static int tda9875_detach(struct i2c_client *client)
...
@@ -294,7 +294,7 @@ static int tda9875_detach(struct i2c_client *client)
static
int
tda9875_command
(
struct
i2c_client
*
client
,
static
int
tda9875_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
tda9875
*
t
=
client
->
data
;
struct
tda9875
*
t
=
i2c_get_clientdata
(
client
)
;
dprintk
(
"In tda9875_command...
\n
"
);
dprintk
(
"In tda9875_command...
\n
"
);
...
@@ -396,9 +396,11 @@ static struct i2c_driver driver = {
...
@@ -396,9 +396,11 @@ static struct i2c_driver driver = {
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"tda9875"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"tda9875"
,
},
};
};
static
int
tda9875_init
(
void
)
static
int
tda9875_init
(
void
)
...
...
drivers/media/video/tda9887.c
View file @
0c950d69
...
@@ -359,7 +359,7 @@ static int tda9887_attach(struct i2c_adapter *adap, int addr,
...
@@ -359,7 +359,7 @@ static int tda9887_attach(struct i2c_adapter *adap, int addr,
return
-
ENOMEM
;
return
-
ENOMEM
;
memset
(
t
,
0
,
sizeof
(
*
t
));
memset
(
t
,
0
,
sizeof
(
*
t
));
t
->
client
=
client_template
;
t
->
client
=
client_template
;
t
->
client
.
data
=
t
;
i2c_set_clientdata
(
&
t
->
client
,
t
)
;
t
->
pinnacle_id
=
-
1
;
t
->
pinnacle_id
=
-
1
;
i2c_attach_client
(
&
t
->
client
);
i2c_attach_client
(
&
t
->
client
);
...
@@ -376,12 +376,12 @@ static int tda9887_probe(struct i2c_adapter *adap)
...
@@ -376,12 +376,12 @@ static int tda9887_probe(struct i2c_adapter *adap)
case
I2C_ALGO_BIT
|
I2C_HW_B_RIVA
:
case
I2C_ALGO_BIT
|
I2C_HW_B_RIVA
:
case
I2C_ALGO_SAA7134
:
case
I2C_ALGO_SAA7134
:
printk
(
"tda9887: probing %s i2c adapter [id=0x%x]
\n
"
,
printk
(
"tda9887: probing %s i2c adapter [id=0x%x]
\n
"
,
adap
->
name
,
adap
->
id
);
adap
->
dev
.
name
,
adap
->
id
);
rc
=
i2c_probe
(
adap
,
&
addr_data
,
tda9887_attach
);
rc
=
i2c_probe
(
adap
,
&
addr_data
,
tda9887_attach
);
break
;
break
;
default:
default:
printk
(
"tda9887: ignoring %s i2c adapter [id=0x%x]
\n
"
,
printk
(
"tda9887: ignoring %s i2c adapter [id=0x%x]
\n
"
,
adap
->
name
,
adap
->
id
);
adap
->
dev
.
name
,
adap
->
id
);
rc
=
0
;
rc
=
0
;
/* nothing */
/* nothing */
}
}
...
@@ -390,7 +390,7 @@ static int tda9887_probe(struct i2c_adapter *adap)
...
@@ -390,7 +390,7 @@ static int tda9887_probe(struct i2c_adapter *adap)
static
int
tda9887_detach
(
struct
i2c_client
*
client
)
static
int
tda9887_detach
(
struct
i2c_client
*
client
)
{
{
struct
tda9887
*
t
=
(
struct
tda9887
*
)
client
->
data
;
struct
tda9887
*
t
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
t
);
kfree
(
t
);
...
@@ -401,7 +401,7 @@ static int tda9887_detach(struct i2c_client *client)
...
@@ -401,7 +401,7 @@ static int tda9887_detach(struct i2c_client *client)
static
int
static
int
tda9887_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
tda9887_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
tda9887
*
t
=
(
struct
tda9887
*
)
client
->
data
;
struct
tda9887
*
t
=
i2c_get_clientdata
(
client
)
;
switch
(
cmd
)
{
switch
(
cmd
)
{
...
@@ -456,9 +456,11 @@ static struct i2c_driver driver = {
...
@@ -456,9 +456,11 @@ static struct i2c_driver driver = {
};
};
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"tda9887"
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"tda9887"
,
},
};
};
static
int
tda9887_init_module
(
void
)
static
int
tda9887_init_module
(
void
)
...
...
drivers/media/video/tuner-3036.c
View file @
0c950d69
...
@@ -196,9 +196,11 @@ i2c_driver_tuner =
...
@@ -196,9 +196,11 @@ i2c_driver_tuner =
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"SAB3036"
,
.
id
=
-
1
,
.
id
=
-
1
,
.
driver
=
&
i2c_driver_tuner
.
driver
=
&
i2c_driver_tuner
,
.
dev
=
{
.
name
=
"SAB3036"
,
},
};
};
int
__init
int
__init
...
...
drivers/media/video/tuner.c
View file @
0c950d69
...
@@ -226,7 +226,7 @@ static int tuner_getstatus(struct i2c_client *c)
...
@@ -226,7 +226,7 @@ static int tuner_getstatus(struct i2c_client *c)
{
{
unsigned
char
byte
;
unsigned
char
byte
;
struct
tuner
*
t
=
(
struct
tuner
*
)
c
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
c
)
;
if
(
t
->
type
==
TUNER_MT2032
)
if
(
t
->
type
==
TUNER_MT2032
)
return
0
;
return
0
;
...
@@ -276,7 +276,7 @@ static int mt2032_init(struct i2c_client *c)
...
@@ -276,7 +276,7 @@ static int mt2032_init(struct i2c_client *c)
{
{
unsigned
char
buf
[
21
];
unsigned
char
buf
[
21
];
int
ret
,
xogc
,
xok
=
0
;
int
ret
,
xogc
,
xok
=
0
;
struct
tuner
*
t
=
(
struct
tuner
*
)
c
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
c
)
;
buf
[
0
]
=
0
;
buf
[
0
]
=
0
;
ret
=
i2c_master_send
(
c
,
buf
,
1
);
ret
=
i2c_master_send
(
c
,
buf
,
1
);
...
@@ -517,7 +517,7 @@ static void mt2032_set_if_freq(struct i2c_client *c,int rfin, int if1, int if2,
...
@@ -517,7 +517,7 @@ static void mt2032_set_if_freq(struct i2c_client *c,int rfin, int if1, int if2,
{
{
unsigned
char
buf
[
21
];
unsigned
char
buf
[
21
];
int
lint_try
,
ret
,
sel
,
lock
=
0
;
int
lint_try
,
ret
,
sel
,
lock
=
0
;
struct
tuner
*
t
=
(
struct
tuner
*
)
c
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
c
)
;
dprintk
(
"mt2032_set_if_freq rfin=%d if1=%d if2=%d from=%d to=%d
\n
"
,
rfin
,
if1
,
if2
,
from
,
to
);
dprintk
(
"mt2032_set_if_freq rfin=%d if1=%d if2=%d from=%d to=%d
\n
"
,
rfin
,
if1
,
if2
,
from
,
to
);
...
@@ -594,7 +594,7 @@ static void set_tv_freq(struct i2c_client *c, int freq)
...
@@ -594,7 +594,7 @@ static void set_tv_freq(struct i2c_client *c, int freq)
u8
config
;
u8
config
;
u16
div
;
u16
div
;
struct
tunertype
*
tun
;
struct
tunertype
*
tun
;
struct
tuner
*
t
=
c
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
c
)
;
unsigned
char
buffer
[
4
];
unsigned
char
buffer
[
4
];
int
rc
;
int
rc
;
...
@@ -733,7 +733,7 @@ static void mt2032_set_radio_freq(struct i2c_client *c,int freq)
...
@@ -733,7 +733,7 @@ static void mt2032_set_radio_freq(struct i2c_client *c,int freq)
static
void
set_radio_freq
(
struct
i2c_client
*
c
,
int
freq
)
static
void
set_radio_freq
(
struct
i2c_client
*
c
,
int
freq
)
{
{
struct
tunertype
*
tun
;
struct
tunertype
*
tun
;
struct
tuner
*
t
=
(
struct
tuner
*
)
c
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
c
)
;
unsigned
char
buffer
[
4
];
unsigned
char
buffer
[
4
];
int
rc
,
div
;
int
rc
,
div
;
...
@@ -794,16 +794,17 @@ static int tuner_attach(struct i2c_adapter *adap, int addr,
...
@@ -794,16 +794,17 @@ static int tuner_attach(struct i2c_adapter *adap, int addr,
if
(
NULL
==
(
client
=
kmalloc
(
sizeof
(
struct
i2c_client
),
GFP_KERNEL
)))
if
(
NULL
==
(
client
=
kmalloc
(
sizeof
(
struct
i2c_client
),
GFP_KERNEL
)))
return
-
ENOMEM
;
return
-
ENOMEM
;
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
memcpy
(
client
,
&
client_template
,
sizeof
(
struct
i2c_client
));
client
->
data
=
t
=
kmalloc
(
sizeof
(
struct
tuner
),
GFP_KERNEL
);
t
=
kmalloc
(
sizeof
(
struct
tuner
),
GFP_KERNEL
);
if
(
NULL
==
t
)
{
if
(
NULL
==
t
)
{
kfree
(
client
);
kfree
(
client
);
return
-
ENOMEM
;
return
-
ENOMEM
;
}
}
i2c_set_clientdata
(
client
,
t
);
memset
(
t
,
0
,
sizeof
(
struct
tuner
));
memset
(
t
,
0
,
sizeof
(
struct
tuner
));
if
(
type
>=
0
&&
type
<
TUNERS
)
{
if
(
type
>=
0
&&
type
<
TUNERS
)
{
t
->
type
=
type
;
t
->
type
=
type
;
printk
(
"tuner(bttv): type forced to %d (%s) [insmod]
\n
"
,
t
->
type
,
tuners
[
t
->
type
].
name
);
printk
(
"tuner(bttv): type forced to %d (%s) [insmod]
\n
"
,
t
->
type
,
tuners
[
t
->
type
].
name
);
strncpy
(
client
->
name
,
tuners
[
t
->
type
].
name
,
sizeof
(
client
->
name
)
);
strncpy
(
client
->
dev
.
name
,
tuners
[
t
->
type
].
name
,
DEVICE_NAME_SIZE
);
}
else
{
}
else
{
t
->
type
=
-
1
;
t
->
type
=
-
1
;
}
}
...
@@ -830,12 +831,12 @@ static int tuner_probe(struct i2c_adapter *adap)
...
@@ -830,12 +831,12 @@ static int tuner_probe(struct i2c_adapter *adap)
case
I2C_ALGO_SAA7134
:
case
I2C_ALGO_SAA7134
:
case
I2C_ALGO_SAA7146
:
case
I2C_ALGO_SAA7146
:
printk
(
"tuner: probing %s i2c adapter [id=0x%x]
\n
"
,
printk
(
"tuner: probing %s i2c adapter [id=0x%x]
\n
"
,
adap
->
name
,
adap
->
id
);
adap
->
dev
.
name
,
adap
->
id
);
rc
=
i2c_probe
(
adap
,
&
addr_data
,
tuner_attach
);
rc
=
i2c_probe
(
adap
,
&
addr_data
,
tuner_attach
);
break
;
break
;
default:
default:
printk
(
"tuner: ignoring %s i2c adapter [id=0x%x]
\n
"
,
printk
(
"tuner: ignoring %s i2c adapter [id=0x%x]
\n
"
,
adap
->
name
,
adap
->
id
);
adap
->
dev
.
name
,
adap
->
id
);
rc
=
0
;
rc
=
0
;
/* nothing */
/* nothing */
}
}
...
@@ -844,7 +845,7 @@ static int tuner_probe(struct i2c_adapter *adap)
...
@@ -844,7 +845,7 @@ static int tuner_probe(struct i2c_adapter *adap)
static
int
tuner_detach
(
struct
i2c_client
*
client
)
static
int
tuner_detach
(
struct
i2c_client
*
client
)
{
{
struct
tuner
*
t
=
(
struct
tuner
*
)
client
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
client
)
;
i2c_detach_client
(
client
);
i2c_detach_client
(
client
);
kfree
(
t
);
kfree
(
t
);
...
@@ -856,7 +857,7 @@ static int tuner_detach(struct i2c_client *client)
...
@@ -856,7 +857,7 @@ static int tuner_detach(struct i2c_client *client)
static
int
static
int
tuner_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
tuner_command
(
struct
i2c_client
*
client
,
unsigned
int
cmd
,
void
*
arg
)
{
{
struct
tuner
*
t
=
(
struct
tuner
*
)
client
->
data
;
struct
tuner
*
t
=
i2c_get_clientdata
(
client
)
;
int
*
iarg
=
(
int
*
)
arg
;
int
*
iarg
=
(
int
*
)
arg
;
#if 0
#if 0
__u16 *sarg = (__u16*)arg;
__u16 *sarg = (__u16*)arg;
...
@@ -875,7 +876,7 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
...
@@ -875,7 +876,7 @@ tuner_command(struct i2c_client *client, unsigned int cmd, void *arg)
t
->
type
=
*
iarg
;
t
->
type
=
*
iarg
;
printk
(
"tuner: type set to %d (%s)
\n
"
,
printk
(
"tuner: type set to %d (%s)
\n
"
,
t
->
type
,
tuners
[
t
->
type
].
name
);
t
->
type
,
tuners
[
t
->
type
].
name
);
strncpy
(
client
->
name
,
tuners
[
t
->
type
].
name
,
sizeof
(
client
->
name
)
);
strncpy
(
client
->
dev
.
name
,
tuners
[
t
->
type
].
name
,
DEVICE_NAME_SIZE
);
if
(
t
->
type
==
TUNER_MT2032
)
if
(
t
->
type
==
TUNER_MT2032
)
mt2032_init
(
client
);
mt2032_init
(
client
);
break
;
break
;
...
@@ -977,9 +978,11 @@ static struct i2c_driver driver = {
...
@@ -977,9 +978,11 @@ static struct i2c_driver driver = {
};
};
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"(tuner unset)"
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"(tuner unset)"
,
},
};
};
static
int
tuner_init_module
(
void
)
static
int
tuner_init_module
(
void
)
...
...
drivers/media/video/tvaudio.c
View file @
0c950d69
...
@@ -161,22 +161,22 @@ static int chip_write(struct CHIPSTATE *chip, int subaddr, int val)
...
@@ -161,22 +161,22 @@ static int chip_write(struct CHIPSTATE *chip, int subaddr, int val)
unsigned
char
buffer
[
2
];
unsigned
char
buffer
[
2
];
if
(
-
1
==
subaddr
)
{
if
(
-
1
==
subaddr
)
{
dprintk
(
"%s: chip_write: 0x%x
\n
"
,
chip
->
c
.
name
,
val
);
dprintk
(
"%s: chip_write: 0x%x
\n
"
,
chip
->
c
.
dev
.
name
,
val
);
chip
->
shadow
.
bytes
[
1
]
=
val
;
chip
->
shadow
.
bytes
[
1
]
=
val
;
buffer
[
0
]
=
val
;
buffer
[
0
]
=
val
;
if
(
1
!=
i2c_master_send
(
&
chip
->
c
,
buffer
,
1
))
{
if
(
1
!=
i2c_master_send
(
&
chip
->
c
,
buffer
,
1
))
{
printk
(
KERN_WARNING
"%s: I/O error (write 0x%x)
\n
"
,
printk
(
KERN_WARNING
"%s: I/O error (write 0x%x)
\n
"
,
chip
->
c
.
name
,
val
);
chip
->
c
.
dev
.
name
,
val
);
return
-
1
;
return
-
1
;
}
}
}
else
{
}
else
{
dprintk
(
"%s: chip_write: reg%d=0x%x
\n
"
,
chip
->
c
.
name
,
subaddr
,
val
);
dprintk
(
"%s: chip_write: reg%d=0x%x
\n
"
,
chip
->
c
.
dev
.
name
,
subaddr
,
val
);
chip
->
shadow
.
bytes
[
subaddr
+
1
]
=
val
;
chip
->
shadow
.
bytes
[
subaddr
+
1
]
=
val
;
buffer
[
0
]
=
subaddr
;
buffer
[
0
]
=
subaddr
;
buffer
[
1
]
=
val
;
buffer
[
1
]
=
val
;
if
(
2
!=
i2c_master_send
(
&
chip
->
c
,
buffer
,
2
))
{
if
(
2
!=
i2c_master_send
(
&
chip
->
c
,
buffer
,
2
))
{
printk
(
KERN_WARNING
"%s: I/O error (write reg%d=0x%x)
\n
"
,
printk
(
KERN_WARNING
"%s: I/O error (write reg%d=0x%x)
\n
"
,
chip
->
c
.
name
,
subaddr
,
val
);
chip
->
c
.
dev
.
name
,
subaddr
,
val
);
return
-
1
;
return
-
1
;
}
}
}
}
...
@@ -201,10 +201,10 @@ static int chip_read(struct CHIPSTATE *chip)
...
@@ -201,10 +201,10 @@ static int chip_read(struct CHIPSTATE *chip)
if
(
1
!=
i2c_master_recv
(
&
chip
->
c
,
&
buffer
,
1
))
{
if
(
1
!=
i2c_master_recv
(
&
chip
->
c
,
&
buffer
,
1
))
{
printk
(
KERN_WARNING
"%s: I/O error (read)
\n
"
,
printk
(
KERN_WARNING
"%s: I/O error (read)
\n
"
,
chip
->
c
.
name
);
chip
->
c
.
dev
.
name
);
return
-
1
;
return
-
1
;
}
}
dprintk
(
"%s: chip_read: 0x%x
\n
"
,
chip
->
c
.
name
,
buffer
);
dprintk
(
"%s: chip_read: 0x%x
\n
"
,
chip
->
c
.
dev
.
name
,
buffer
);
return
buffer
;
return
buffer
;
}
}
...
@@ -220,11 +220,11 @@ static int chip_read2(struct CHIPSTATE *chip, int subaddr)
...
@@ -220,11 +220,11 @@ static int chip_read2(struct CHIPSTATE *chip, int subaddr)
if
(
2
!=
i2c_transfer
(
chip
->
c
.
adapter
,
msgs
,
2
))
{
if
(
2
!=
i2c_transfer
(
chip
->
c
.
adapter
,
msgs
,
2
))
{
printk
(
KERN_WARNING
"%s: I/O error (read2)
\n
"
,
printk
(
KERN_WARNING
"%s: I/O error (read2)
\n
"
,
chip
->
c
.
name
);
chip
->
c
.
dev
.
name
);
return
-
1
;
return
-
1
;
}
}
dprintk
(
"%s: chip_read2: reg%d=0x%x
\n
"
,
dprintk
(
"%s: chip_read2: reg%d=0x%x
\n
"
,
chip
->
c
.
name
,
subaddr
,
read
[
0
]);
chip
->
c
.
dev
.
name
,
subaddr
,
read
[
0
]);
return
read
[
0
];
return
read
[
0
];
}
}
...
@@ -237,7 +237,7 @@ static int chip_cmd(struct CHIPSTATE *chip, char *name, audiocmd *cmd)
...
@@ -237,7 +237,7 @@ static int chip_cmd(struct CHIPSTATE *chip, char *name, audiocmd *cmd)
/* update our shadow register set; print bytes if (debug > 0) */
/* update our shadow register set; print bytes if (debug > 0) */
dprintk
(
"%s: chip_cmd(%s): reg=%d, data:"
,
dprintk
(
"%s: chip_cmd(%s): reg=%d, data:"
,
chip
->
c
.
name
,
name
,
cmd
->
bytes
[
0
]);
chip
->
c
.
dev
.
name
,
name
,
cmd
->
bytes
[
0
]);
for
(
i
=
1
;
i
<
cmd
->
count
;
i
++
)
{
for
(
i
=
1
;
i
<
cmd
->
count
;
i
++
)
{
dprintk
(
" 0x%x"
,
cmd
->
bytes
[
i
]);
dprintk
(
" 0x%x"
,
cmd
->
bytes
[
i
]);
chip
->
shadow
.
bytes
[
i
+
cmd
->
bytes
[
0
]]
=
cmd
->
bytes
[
i
];
chip
->
shadow
.
bytes
[
i
+
cmd
->
bytes
[
0
]]
=
cmd
->
bytes
[
i
];
...
@@ -246,7 +246,7 @@ static int chip_cmd(struct CHIPSTATE *chip, char *name, audiocmd *cmd)
...
@@ -246,7 +246,7 @@ static int chip_cmd(struct CHIPSTATE *chip, char *name, audiocmd *cmd)
/* send data to the chip */
/* send data to the chip */
if
(
cmd
->
count
!=
i2c_master_send
(
&
chip
->
c
,
cmd
->
bytes
,
cmd
->
count
))
{
if
(
cmd
->
count
!=
i2c_master_send
(
&
chip
->
c
,
cmd
->
bytes
,
cmd
->
count
))
{
printk
(
KERN_WARNING
"%s: I/O error (%s)
\n
"
,
chip
->
c
.
name
,
name
);
printk
(
KERN_WARNING
"%s: I/O error (%s)
\n
"
,
chip
->
c
.
dev
.
name
,
name
);
return
-
1
;
return
-
1
;
}
}
return
0
;
return
0
;
...
@@ -273,19 +273,19 @@ static int chip_thread(void *data)
...
@@ -273,19 +273,19 @@ static int chip_thread(void *data)
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
lock_kernel
();
lock_kernel
();
#endif
#endif
daemonize
(
"%s"
,
chip
->
c
.
name
);
daemonize
(
"%s"
,
chip
->
c
.
dev
.
name
);
chip
->
thread
=
current
;
chip
->
thread
=
current
;
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
unlock_kernel
();
unlock_kernel
();
#endif
#endif
dprintk
(
"%s: thread started
\n
"
,
chip
->
c
.
name
);
dprintk
(
"%s: thread started
\n
"
,
chip
->
c
.
dev
.
name
);
if
(
chip
->
notify
!=
NULL
)
if
(
chip
->
notify
!=
NULL
)
up
(
chip
->
notify
);
up
(
chip
->
notify
);
for
(;;)
{
for
(;;)
{
interruptible_sleep_on
(
&
chip
->
wq
);
interruptible_sleep_on
(
&
chip
->
wq
);
dprintk
(
"%s: thread wakeup
\n
"
,
chip
->
c
.
name
);
dprintk
(
"%s: thread wakeup
\n
"
,
chip
->
c
.
dev
.
name
);
if
(
chip
->
done
||
signal_pending
(
current
))
if
(
chip
->
done
||
signal_pending
(
current
))
break
;
break
;
...
@@ -301,7 +301,7 @@ static int chip_thread(void *data)
...
@@ -301,7 +301,7 @@ static int chip_thread(void *data)
}
}
chip
->
thread
=
NULL
;
chip
->
thread
=
NULL
;
dprintk
(
"%s: thread exiting
\n
"
,
chip
->
c
.
name
);
dprintk
(
"%s: thread exiting
\n
"
,
chip
->
c
.
dev
.
name
);
if
(
chip
->
notify
!=
NULL
)
if
(
chip
->
notify
!=
NULL
)
up
(
chip
->
notify
);
up
(
chip
->
notify
);
...
@@ -316,7 +316,7 @@ static void generic_checkmode(struct CHIPSTATE *chip)
...
@@ -316,7 +316,7 @@ static void generic_checkmode(struct CHIPSTATE *chip)
if
(
mode
==
chip
->
prevmode
)
if
(
mode
==
chip
->
prevmode
)
return
;
return
;
dprintk
(
"%s: thread checkmode
\n
"
,
chip
->
c
.
name
);
dprintk
(
"%s: thread checkmode
\n
"
,
chip
->
c
.
dev
.
name
);
chip
->
prevmode
=
mode
;
chip
->
prevmode
=
mode
;
if
(
mode
&
VIDEO_SOUND_STEREO
)
if
(
mode
&
VIDEO_SOUND_STEREO
)
...
@@ -1339,7 +1339,7 @@ static int chip_attach(struct i2c_adapter *adap, int addr,
...
@@ -1339,7 +1339,7 @@ static int chip_attach(struct i2c_adapter *adap, int addr,
memcpy
(
&
chip
->
c
,
&
client_template
,
sizeof
(
struct
i2c_client
));
memcpy
(
&
chip
->
c
,
&
client_template
,
sizeof
(
struct
i2c_client
));
chip
->
c
.
adapter
=
adap
;
chip
->
c
.
adapter
=
adap
;
chip
->
c
.
addr
=
addr
;
chip
->
c
.
addr
=
addr
;
chip
->
c
.
data
=
chip
;
i2c_set_clientdata
(
&
chip
->
c
,
chip
)
;
/* find description for the chip */
/* find description for the chip */
dprintk
(
"tvaudio: chip found @ i2c-addr=0x%x
\n
"
,
addr
<<
1
);
dprintk
(
"tvaudio: chip found @ i2c-addr=0x%x
\n
"
,
addr
<<
1
);
...
@@ -1364,7 +1364,7 @@ static int chip_attach(struct i2c_adapter *adap, int addr,
...
@@ -1364,7 +1364,7 @@ static int chip_attach(struct i2c_adapter *adap, int addr,
(
desc
->
flags
&
CHIP_HAS_INPUTSEL
)
?
" audiomux"
:
""
);
(
desc
->
flags
&
CHIP_HAS_INPUTSEL
)
?
" audiomux"
:
""
);
/* fill required data structures */
/* fill required data structures */
str
cpy
(
chip
->
c
.
name
,
desc
->
name
);
str
ncpy
(
chip
->
c
.
dev
.
name
,
desc
->
name
,
DEVICE_NAME_SIZE
);
chip
->
type
=
desc
-
chiplist
;
chip
->
type
=
desc
-
chiplist
;
chip
->
shadow
.
count
=
desc
->
registers
+
1
;
chip
->
shadow
.
count
=
desc
->
registers
+
1
;
chip
->
prevmode
=
-
1
;
chip
->
prevmode
=
-
1
;
...
@@ -1421,7 +1421,7 @@ static int chip_probe(struct i2c_adapter *adap)
...
@@ -1421,7 +1421,7 @@ static int chip_probe(struct i2c_adapter *adap)
static
int
chip_detach
(
struct
i2c_client
*
client
)
static
int
chip_detach
(
struct
i2c_client
*
client
)
{
{
struct
CHIPSTATE
*
chip
=
client
->
data
;
struct
CHIPSTATE
*
chip
=
i2c_get_clientdata
(
client
)
;
del_timer
(
&
chip
->
wt
);
del_timer
(
&
chip
->
wt
);
if
(
NULL
!=
chip
->
thread
)
{
if
(
NULL
!=
chip
->
thread
)
{
...
@@ -1447,10 +1447,10 @@ static int chip_command(struct i2c_client *client,
...
@@ -1447,10 +1447,10 @@ static int chip_command(struct i2c_client *client,
unsigned
int
cmd
,
void
*
arg
)
unsigned
int
cmd
,
void
*
arg
)
{
{
__u16
*
sarg
=
arg
;
__u16
*
sarg
=
arg
;
struct
CHIPSTATE
*
chip
=
client
->
data
;
struct
CHIPSTATE
*
chip
=
i2c_get_clientdata
(
client
)
;
struct
CHIPDESC
*
desc
=
chiplist
+
chip
->
type
;
struct
CHIPDESC
*
desc
=
chiplist
+
chip
->
type
;
dprintk
(
"%s: chip_command 0x%x
\n
"
,
chip
->
c
.
name
,
cmd
);
dprintk
(
"%s: chip_command 0x%x
\n
"
,
chip
->
c
.
dev
.
name
,
cmd
);
switch
(
cmd
)
{
switch
(
cmd
)
{
case
AUDC_SET_INPUT
:
case
AUDC_SET_INPUT
:
...
@@ -1558,9 +1558,11 @@ static struct i2c_driver driver = {
...
@@ -1558,9 +1558,11 @@ static struct i2c_driver driver = {
static
struct
i2c_client
client_template
=
static
struct
i2c_client
client_template
=
{
{
.
name
=
"(unset)"
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
flags
=
I2C_CLIENT_ALLOW_USE
,
.
driver
=
&
driver
,
.
driver
=
&
driver
,
.
dev
=
{
.
name
=
"(unset)"
,
},
};
};
static
int
audiochip_init_module
(
void
)
static
int
audiochip_init_module
(
void
)
...
...
include/linux/i2c.h
View file @
0c950d69
...
@@ -156,7 +156,6 @@ extern struct bus_type i2c_bus_type;
...
@@ -156,7 +156,6 @@ extern struct bus_type i2c_bus_type;
* function is mainly used for lookup & other admin. functions.
* function is mainly used for lookup & other admin. functions.
*/
*/
struct
i2c_client
{
struct
i2c_client
{
char
name
[
32
];
int
id
;
int
id
;
unsigned
int
flags
;
/* div., see below */
unsigned
int
flags
;
/* div., see below */
unsigned
int
addr
;
/* chip address - NOTE: 7bit */
unsigned
int
addr
;
/* chip address - NOTE: 7bit */
...
@@ -167,11 +166,21 @@ struct i2c_client {
...
@@ -167,11 +166,21 @@ struct i2c_client {
alignment considerations */
alignment considerations */
struct
i2c_adapter
*
adapter
;
/* the adapter we sit on */
struct
i2c_adapter
*
adapter
;
/* the adapter we sit on */
struct
i2c_driver
*
driver
;
/* and our access routines */
struct
i2c_driver
*
driver
;
/* and our access routines */
void
*
data
;
/* for the clients */
int
usage_count
;
/* How many accesses currently */
int
usage_count
;
/* How many accesses currently */
/* to the client */
/* to the client */
struct
device
dev
;
/* the device structure */
};
};
#define to_i2c_client(d) container_of(d, struct i2c_client, dev)
static
inline
void
*
i2c_get_clientdata
(
struct
i2c_client
*
dev
)
{
return
dev_get_drvdata
(
&
dev
->
dev
);
}
static
inline
void
i2c_set_clientdata
(
struct
i2c_client
*
dev
,
void
*
data
)
{
return
dev_set_drvdata
(
&
dev
->
dev
,
data
);
}
/*
/*
* The following structs are for those who like to implement new bus drivers:
* The following structs are for those who like to implement new bus drivers:
...
@@ -210,7 +219,6 @@ struct i2c_algorithm {
...
@@ -210,7 +219,6 @@ struct i2c_algorithm {
*/
*/
struct
i2c_adapter
{
struct
i2c_adapter
{
struct
module
*
owner
;
struct
module
*
owner
;
char
name
[
32
];
/* some useful name to identify the adapter */
unsigned
int
id
;
/* == is algo->id | hwdep.struct->id, */
unsigned
int
id
;
/* == is algo->id | hwdep.struct->id, */
/* for registered values see below */
/* for registered values see below */
struct
i2c_algorithm
*
algo
;
/* the algorithm to access the bus */
struct
i2c_algorithm
*
algo
;
/* the algorithm to access the bus */
...
@@ -220,12 +228,7 @@ struct i2c_adapter {
...
@@ -220,12 +228,7 @@ struct i2c_adapter {
int
(
*
client_register
)(
struct
i2c_client
*
);
int
(
*
client_register
)(
struct
i2c_client
*
);
int
(
*
client_unregister
)(
struct
i2c_client
*
);
int
(
*
client_unregister
)(
struct
i2c_client
*
);
void
*
data
;
/* private data for the adapter */
/* data fields that are valid for all devices */
/* some data fields that are used by all types */
/* these data fields are readonly to the public */
/* and can be set via the i2c_ioctl call */
/* data fields that are valid for all devices */
struct
semaphore
bus
;
struct
semaphore
bus
;
struct
semaphore
list
;
struct
semaphore
list
;
unsigned
int
flags
;
/* flags specifying div. data */
unsigned
int
flags
;
/* flags specifying div. data */
...
@@ -243,6 +246,16 @@ struct i2c_adapter {
...
@@ -243,6 +246,16 @@ struct i2c_adapter {
};
};
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
#define to_i2c_adapter(d) container_of(d, struct i2c_adapter, dev)
static
inline
void
*
i2c_get_adapdata
(
struct
i2c_adapter
*
dev
)
{
return
dev_get_drvdata
(
&
dev
->
dev
);
}
static
inline
void
i2c_set_adapdata
(
struct
i2c_adapter
*
dev
,
void
*
data
)
{
return
dev_set_drvdata
(
&
dev
->
dev
,
data
);
}
/*flags for the driver struct: */
/*flags for the driver struct: */
#define I2C_DF_NOTIFY 0x01
/* notify on bus (de/a)ttaches */
#define I2C_DF_NOTIFY 0x01
/* notify on bus (de/a)ttaches */
#define I2C_DF_DUMMY 0x02
/* do not connect any clients */
#define I2C_DF_DUMMY 0x02
/* do not connect any clients */
...
...
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