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
Kirill Smelkov
linux
Commits
48ff60a2
Commit
48ff60a2
authored
Mar 12, 2003
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
i2c: get i2c-piix4 driver to actually bind to a PCI device.
parent
66ba06f1
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
52 additions
and
47 deletions
+52
-47
drivers/i2c/busses/i2c-piix4.c
drivers/i2c/busses/i2c-piix4.c
+52
-47
No files found.
drivers/i2c/busses/i2c-piix4.c
View file @
48ff60a2
...
@@ -49,18 +49,6 @@ struct sd {
...
@@ -49,18 +49,6 @@ struct sd {
const
char
*
name
;
const
char
*
name
;
};
};
/* Note: We assume all devices are identical
to the Intel PIIX4; we only mention it during detection. */
static
struct
sd
supported
[]
=
{
{
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82371AB_3
,
3
,
"PIIX4"
},
{
PCI_VENDOR_ID_SERVERWORKS
,
PCI_DEVICE_ID_SERVERWORKS_OSB4
,
0
,
"OSB4"
},
{
PCI_VENDOR_ID_SERVERWORKS
,
PCI_DEVICE_ID_SERVERWORKS_CSB5
,
0
,
"CSB5"
},
{
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82443MX_3
,
3
,
"440MX"
},
{
PCI_VENDOR_ID_EFAR
,
PCI_DEVICE_ID_EFAR_SLC90E66_3
,
0
,
"Victory66"
},
{
0
,
0
,
0
,
NULL
}
};
/* PIIX4 SMBus address offsets */
/* PIIX4 SMBus address offsets */
#define SMBHSTSTS (0 + piix4_smba)
#define SMBHSTSTS (0 + piix4_smba)
#define SMBHSLVSTS (1 + piix4_smba)
#define SMBHSLVSTS (1 + piix4_smba)
...
@@ -142,41 +130,16 @@ static int __init ibm_dmi_probe(void)
...
@@ -142,41 +130,16 @@ static int __init ibm_dmi_probe(void)
}
}
#endif
#endif
/* Detect whether a PIIX4 can be found, and initialize it, where necessary.
static
int
piix4_setup
(
struct
pci_dev
*
PIIX4_dev
,
const
struct
pci_device_id
*
id
)
Note the differences between kernels with the old PCI BIOS interface and
newer kernels with the real PCI interface. In compat.h some things are
defined to make the transition easier. */
int
piix4_setup
(
void
)
{
{
int
error_return
=
0
;
int
error_return
=
0
;
unsigned
char
temp
;
unsigned
char
temp
;
struct
sd
*
num
=
supported
;
struct
pci_dev
*
PIIX4_dev
=
NULL
;
if
(
pci_present
()
==
0
)
{
error_return
=
-
ENODEV
;
goto
END
;
}
/* Look for a supported device/function */
/* match up the function */
do
{
if
(
PCI_FUNC
(
PIIX4_dev
->
devfn
)
!=
id
->
driver_data
)
if
((
PIIX4_dev
=
pci_find_device
(
num
->
mfr
,
num
->
dev
,
return
-
ENODEV
;
PIIX4_dev
)))
{
if
(
PCI_FUNC
(
PIIX4_dev
->
devfn
)
!=
num
->
fn
)
continue
;
break
;
}
PIIX4_dev
=
NULL
;
num
++
;
}
while
(
num
->
mfr
);
if
(
PIIX4_dev
==
NULL
)
{
printk
(
KERN_INFO
"i2c-piix4.o: Found %s device
\n
"
,
PIIX4_dev
->
dev
.
name
);
printk
(
KERN_ERR
"i2c-piix4.o: Error: Can't detect PIIX4 or compatible device!
\n
"
);
error_return
=
-
ENODEV
;
goto
END
;
}
printk
(
KERN_INFO
"i2c-piix4.o: Found %s device
\n
"
,
num
->
name
);
#ifdef CONFIG_X86
#ifdef CONFIG_X86
if
(
ibm_dmi_probe
())
{
if
(
ibm_dmi_probe
())
{
...
@@ -267,14 +230,14 @@ int piix4_setup(void)
...
@@ -267,14 +230,14 @@ int piix4_setup(void)
/* Internally used pause function */
/* Internally used pause function */
void
piix4_do_pause
(
unsigned
int
amount
)
static
void
piix4_do_pause
(
unsigned
int
amount
)
{
{
current
->
state
=
TASK_INTERRUPTIBLE
;
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule_timeout
(
amount
);
schedule_timeout
(
amount
);
}
}
/* Another internally used function */
/* Another internally used function */
int
piix4_transaction
(
void
)
static
int
piix4_transaction
(
void
)
{
{
int
temp
;
int
temp
;
int
result
=
0
;
int
result
=
0
;
...
@@ -363,7 +326,7 @@ int piix4_transaction(void)
...
@@ -363,7 +326,7 @@ int piix4_transaction(void)
}
}
/* Return -1 on error. */
/* Return -1 on error. */
s32
piix4_access
(
struct
i2c_adapter
*
adap
,
u16
addr
,
s
tatic
s
32
piix4_access
(
struct
i2c_adapter
*
adap
,
u16
addr
,
unsigned
short
flags
,
char
read_write
,
unsigned
short
flags
,
char
read_write
,
u8
command
,
int
size
,
union
i2c_smbus_data
*
data
)
u8
command
,
int
size
,
union
i2c_smbus_data
*
data
)
{
{
...
@@ -456,7 +419,7 @@ s32 piix4_access(struct i2c_adapter * adap, u16 addr,
...
@@ -456,7 +419,7 @@ s32 piix4_access(struct i2c_adapter * adap, u16 addr,
}
}
u32
piix4_func
(
struct
i2c_adapter
*
adapter
)
static
u32
piix4_func
(
struct
i2c_adapter
*
adapter
)
{
{
return
I2C_FUNC_SMBUS_QUICK
|
I2C_FUNC_SMBUS_BYTE
|
return
I2C_FUNC_SMBUS_QUICK
|
I2C_FUNC_SMBUS_BYTE
|
I2C_FUNC_SMBUS_BYTE_DATA
|
I2C_FUNC_SMBUS_WORD_DATA
|
I2C_FUNC_SMBUS_BYTE_DATA
|
I2C_FUNC_SMBUS_WORD_DATA
|
...
@@ -480,16 +443,58 @@ static struct i2c_adapter piix4_adapter = {
...
@@ -480,16 +443,58 @@ static struct i2c_adapter piix4_adapter = {
static
struct
pci_device_id
piix4_ids
[]
__devinitdata
=
{
static
struct
pci_device_id
piix4_ids
[]
__devinitdata
=
{
{
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_DEVICE_ID_INTEL_82371AB_3
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
3
},
{
.
vendor
=
PCI_VENDOR_ID_SERVERWORKS
,
.
device
=
PCI_DEVICE_ID_SERVERWORKS_OSB4
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
0
,
},
{
.
vendor
=
PCI_VENDOR_ID_SERVERWORKS
,
.
device
=
PCI_DEVICE_ID_SERVERWORKS_CSB5
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
0
,
},
{
.
vendor
=
PCI_VENDOR_ID_INTEL
,
.
device
=
PCI_DEVICE_ID_INTEL_82443MX_3
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
3
,
},
{
.
vendor
=
PCI_VENDOR_ID_EFAR
,
.
device
=
PCI_DEVICE_ID_EFAR_SLC90E66_3
,
.
subvendor
=
PCI_ANY_ID
,
.
subdevice
=
PCI_ANY_ID
,
.
driver_data
=
0
,
},
{
0
,
}
{
0
,
}
};
};
static
int
__devinit
piix4_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
static
int
__devinit
piix4_probe
(
struct
pci_dev
*
dev
,
const
struct
pci_device_id
*
id
)
{
{
int
retval
;
retval
=
piix4_setup
(
dev
,
id
);
if
(
retval
)
return
retval
;
sprintf
(
piix4_adapter
.
name
,
"SMBus PIIX4 adapter at %04x"
,
sprintf
(
piix4_adapter
.
name
,
"SMBus PIIX4 adapter at %04x"
,
piix4_smba
);
piix4_smba
);
i2c_add_adapter
(
&
piix4_adapter
);
retval
=
i2c_add_adapter
(
&
piix4_adapter
);
return
retval
;
}
}
static
void
__devexit
piix4_remove
(
struct
pci_dev
*
dev
)
static
void
__devexit
piix4_remove
(
struct
pci_dev
*
dev
)
...
...
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