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
9c574c5a
Commit
9c574c5a
authored
Aug 04, 2004
by
Greg Kroah-Hartman
Browse files
Options
Browse Files
Download
Plain Diff
Merge gregkh@kernel.bkbits.net:linux/i2c-2.6
into kroah.com:/home/greg/linux/BK/i2c-2.6
parents
a5cd4546
cd4873bf
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
197 additions
and
22 deletions
+197
-22
drivers/i2c/algos/i2c-algo-pcf.c
drivers/i2c/algos/i2c-algo-pcf.c
+0
-6
drivers/i2c/busses/Kconfig
drivers/i2c/busses/Kconfig
+11
-0
drivers/i2c/busses/Makefile
drivers/i2c/busses/Makefile
+1
-0
drivers/i2c/busses/i2c-ite.c
drivers/i2c/busses/i2c-ite.c
+0
-8
drivers/i2c/busses/i2c-ixp2000.c
drivers/i2c/busses/i2c-ixp2000.c
+171
-0
drivers/i2c/busses/i2c-keywest.c
drivers/i2c/busses/i2c-keywest.c
+1
-2
drivers/i2c/busses/i2c-nforce2.c
drivers/i2c/busses/i2c-nforce2.c
+1
-2
drivers/i2c/busses/i2c-sis630.c
drivers/i2c/busses/i2c-sis630.c
+1
-0
drivers/i2c/busses/scx200_acb.c
drivers/i2c/busses/scx200_acb.c
+2
-1
drivers/i2c/chips/w83781d.c
drivers/i2c/chips/w83781d.c
+2
-3
drivers/pci/quirks.c
drivers/pci/quirks.c
+7
-0
No files found.
drivers/i2c/algos/i2c-algo-pcf.c
View file @
9c574c5a
...
...
@@ -101,12 +101,6 @@ static int wait_for_bb(struct i2c_algo_pcf_data *adap) {
}
static
inline
void
pcf_sleep
(
unsigned
long
timeout
)
{
schedule_timeout
(
timeout
*
HZ
);
}
static
int
wait_for_pin
(
struct
i2c_algo_pcf_data
*
adap
,
int
*
status
)
{
int
timeout
=
DEF_TIMEOUT
;
...
...
drivers/i2c/busses/Kconfig
View file @
9c574c5a
...
...
@@ -164,6 +164,17 @@ config I2C_IXP4XX
This support is also available as a module. If so, the module
will be called i2c-ixp4xx.
config I2C_IXP2000
tristate "IXP2000 GPIO-Based I2C Interface"
depends on I2C && ARCH_IXP2000
select I2C_ALGOBIT
help
Say Y here if you have an Intel IXP2000(2400, 2800, 2850) based
system and are using GPIO lines for an I2C bus.
This support is also available as a module. If so, the module
will be called i2c-ixp2000.
config I2C_KEYWEST
tristate "Powermac Keywest I2C interface"
depends on I2C && PPC_PMAC
...
...
drivers/i2c/busses/Makefile
View file @
9c574c5a
...
...
@@ -16,6 +16,7 @@ obj-$(CONFIG_I2C_IOP3XX) += i2c-iop3xx.o
obj-$(CONFIG_I2C_ISA)
+=
i2c-isa.o
obj-$(CONFIG_I2C_ITE)
+=
i2c-ite.o
obj-$(CONFIG_I2C_IXP4XX)
+=
i2c-ixp4xx.o
obj-$(CONFIG_I2C_IXP2000)
+=
i2c-ixp2000.o
obj-$(CONFIG_I2C_KEYWEST)
+=
i2c-keywest.o
obj-$(CONFIG_I2C_NFORCE2)
+=
i2c-nforce2.o
obj-$(CONFIG_I2C_PARPORT)
+=
i2c-parport.o
...
...
drivers/i2c/busses/i2c-ite.c
View file @
9c574c5a
...
...
@@ -102,14 +102,6 @@ static int iic_ite_getclock(void *data)
}
#if 0
static void iic_ite_sleep(unsigned long timeout)
{
schedule_timeout( timeout * HZ);
}
#endif
/* Put this process to sleep. We will wake up when the
* IIC controller interrupts.
*/
...
...
drivers/i2c/busses/i2c-ixp2000.c
0 → 100644
View file @
9c574c5a
/*
* drivers/i2c/busses/i2c-ixp2000.c
*
* I2C adapter for IXP2000 systems using GPIOs for I2C bus
*
* Author: Deepak Saxena <dsaxena@plexity.net>
* Based on IXDP2400 code by: Naeem M. Afzal <naeem.m.afzal@intel.com>
* Made generic by: Jeff Daly <jeffrey.daly@intel.com>
*
* Copyright (c) 2003-2004 MontaVista Software Inc.
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*
* From Jeff Daly:
*
* I2C adapter driver for Intel IXDP2xxx platforms. This should work for any
* IXP2000 platform if it uses the HW GPIO in the same manner. Basically,
* SDA and SCL GPIOs have external pullups. Setting the respective GPIO to
* an input will make the signal a '1' via the pullup. Setting them to
* outputs will pull them down.
*
* The GPIOs are open drain signals and are used as configuration strap inputs
* during power-up so there's generally a buffer on the board that needs to be
* 'enabled' to drive the GPIOs.
*/
#include <linux/config.h>
#ifdef CONFIG_I2C_DEBUG_BUS
#define DEBUG 1
#endif
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/module.h>
#include <linux/i2c.h>
#include <linux/i2c-algo-bit.h>
#include <asm/hardware.h>
/* Pick up IXP42000-specific bits */
static
inline
int
ixp2000_scl_pin
(
void
*
data
)
{
return
((
struct
ixp2000_i2c_pins
*
)
data
)
->
scl_pin
;
}
static
inline
int
ixp2000_sda_pin
(
void
*
data
)
{
return
((
struct
ixp2000_i2c_pins
*
)
data
)
->
sda_pin
;
}
static
void
ixp2000_bit_setscl
(
void
*
data
,
int
val
)
{
int
i
=
5000
;
if
(
val
)
{
gpio_line_config
(
ixp2000_scl_pin
(
data
),
GPIO_IN
);
while
(
!
gpio_line_get
(
ixp2000_scl_pin
(
data
))
&&
i
--
);
}
else
{
gpio_line_config
(
ixp2000_scl_pin
(
data
),
GPIO_OUT
);
}
}
static
void
ixp2000_bit_setsda
(
void
*
data
,
int
val
)
{
if
(
val
)
{
gpio_line_config
(
ixp2000_sda_pin
(
data
),
GPIO_IN
);
}
else
{
gpio_line_config
(
ixp2000_sda_pin
(
data
),
GPIO_OUT
);
}
}
static
int
ixp2000_bit_getscl
(
void
*
data
)
{
return
gpio_line_get
(
ixp2000_scl_pin
(
data
));
}
static
int
ixp2000_bit_getsda
(
void
*
data
)
{
return
gpio_line_get
(
ixp2000_sda_pin
(
data
));
}
struct
ixp2000_i2c_data
{
struct
ixp2000_i2c_pins
*
gpio_pins
;
struct
i2c_adapter
adapter
;
struct
i2c_algo_bit_data
algo_data
;
};
static
int
ixp2000_i2c_remove
(
struct
device
*
dev
)
{
struct
platform_device
*
plat_dev
=
to_platform_device
(
dev
);
struct
ixp2000_i2c_data
*
drv_data
=
dev_get_drvdata
(
&
plat_dev
->
dev
);
dev_set_drvdata
(
&
plat_dev
->
dev
,
NULL
);
i2c_bit_del_bus
(
&
drv_data
->
adapter
);
kfree
(
drv_data
);
return
0
;
}
static
int
ixp2000_i2c_probe
(
struct
device
*
dev
)
{
int
err
;
struct
platform_device
*
plat_dev
=
to_platform_device
(
dev
);
struct
ixp2000_i2c_pins
*
gpio
=
plat_dev
->
dev
.
platform_data
;
struct
ixp2000_i2c_data
*
drv_data
=
kmalloc
(
sizeof
(
struct
ixp2000_i2c_data
),
GFP_KERNEL
);
if
(
!
drv_data
)
return
-
ENOMEM
;
memzero
(
drv_data
,
sizeof
(
*
drv_data
));
drv_data
->
gpio_pins
=
gpio
;
drv_data
->
algo_data
.
data
=
gpio
;
drv_data
->
algo_data
.
setsda
=
ixp2000_bit_setsda
;
drv_data
->
algo_data
.
setscl
=
ixp2000_bit_setscl
;
drv_data
->
algo_data
.
getsda
=
ixp2000_bit_getsda
;
drv_data
->
algo_data
.
getscl
=
ixp2000_bit_getscl
;
drv_data
->
algo_data
.
udelay
=
6
;
drv_data
->
algo_data
.
mdelay
=
6
;
drv_data
->
algo_data
.
timeout
=
100
;
drv_data
->
adapter
.
id
=
I2C_HW_B_IXP2000
,
drv_data
->
adapter
.
algo_data
=
&
drv_data
->
algo_data
,
drv_data
->
adapter
.
dev
.
parent
=
&
plat_dev
->
dev
;
gpio_line_config
(
gpio
->
sda_pin
,
GPIO_IN
);
gpio_line_config
(
gpio
->
scl_pin
,
GPIO_IN
);
gpio_line_set
(
gpio
->
scl_pin
,
0
);
gpio_line_set
(
gpio
->
sda_pin
,
0
);
if
((
err
=
i2c_bit_add_bus
(
&
drv_data
->
adapter
))
!=
0
)
{
dev_err
(
dev
,
"Could not install, error %d
\n
"
,
err
);
kfree
(
drv_data
);
return
err
;
}
dev_set_drvdata
(
&
plat_dev
->
dev
,
drv_data
);
return
0
;
}
static
struct
device_driver
ixp2000_i2c_driver
=
{
.
name
=
"IXP2000-I2C"
,
.
bus
=
&
platform_bus_type
,
.
probe
=
ixp2000_i2c_probe
,
.
remove
=
ixp2000_i2c_remove
,
};
static
int
__init
ixp2000_i2c_init
(
void
)
{
return
driver_register
(
&
ixp2000_i2c_driver
);
}
static
void
__exit
ixp2000_i2c_exit
(
void
)
{
driver_unregister
(
&
ixp2000_i2c_driver
);
}
module_init
(
ixp2000_i2c_init
);
module_exit
(
ixp2000_i2c_exit
);
MODULE_AUTHOR
(
"Deepak Saxena <dsaxena@plexity.net>"
);
MODULE_DESCRIPTION
(
"IXP2000 GPIO-based I2C bus driver"
);
MODULE_LICENSE
(
"GPL"
);
drivers/i2c/busses/i2c-keywest.c
View file @
9c574c5a
...
...
@@ -662,8 +662,7 @@ dispose_iface(struct device *dev)
spin_lock_irq
(
&
iface
->
lock
);
while
(
iface
->
state
!=
state_idle
)
{
spin_unlock_irq
(
&
iface
->
lock
);
set_task_state
(
current
,
TASK_UNINTERRUPTIBLE
);
schedule_timeout
(
HZ
/
10
);
msleep
(
100
);
spin_lock_irq
(
&
iface
->
lock
);
}
#endif
/* POLLED_MODE */
...
...
drivers/i2c/busses/i2c-nforce2.c
View file @
9c574c5a
...
...
@@ -244,8 +244,7 @@ static s32 nforce2_access(struct i2c_adapter * adap, u16 addr,
temp
=
inb_p
(
NVIDIA_SMB_STS
);
}
if
(
~
temp
&
NVIDIA_SMB_STS_DONE
)
{
current
->
state
=
TASK_INTERRUPTIBLE
;
schedule_timeout
(
HZ
/
100
);
msleep
(
10
);
temp
=
inb_p
(
NVIDIA_SMB_STS
);
}
...
...
drivers/i2c/busses/i2c-sis630.c
View file @
9c574c5a
...
...
@@ -464,6 +464,7 @@ static struct i2c_adapter sis630_adapter = {
static
struct
pci_device_id
sis630_ids
[]
__devinitdata
=
{
{
PCI_DEVICE
(
PCI_VENDOR_ID_SI
,
PCI_DEVICE_ID_SI_503
)
},
{
PCI_DEVICE
(
PCI_VENDOR_ID_SI
,
PCI_DEVICE_ID_SI_LPC
)
},
{
0
,
}
};
...
...
drivers/i2c/busses/scx200_acb.c
View file @
9c574c5a
...
...
@@ -32,6 +32,7 @@
#include <linux/i2c.h>
#include <linux/smp_lock.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <asm/io.h>
#include <linux/scx200.h>
...
...
@@ -254,7 +255,7 @@ static void scx200_acb_poll(struct scx200_acb_iface *iface)
scx200_acb_machine
(
iface
,
status
);
return
;
}
schedule_timeout
(
HZ
/
100
+
1
);
msleep
(
10
);
}
scx200_acb_timeout
(
iface
);
...
...
drivers/i2c/chips/w83781d.c
View file @
9c574c5a
...
...
@@ -815,8 +815,7 @@ store_sensor_reg(struct device *dev, const char *buf, size_t count, int nr)
data
->
sens
[
nr
-
1
]
=
val
;
break
;
default:
dev_err
(
&
client
->
dev
,
"Invalid sensor type %ld; must be 1, 2, or %d
\n
"
,
dev_err
(
dev
,
"Invalid sensor type %ld; must be 1, 2, or %d
\n
"
,
(
long
)
val
,
W83781D_DEFAULT_BETA
);
break
;
}
...
...
@@ -1593,7 +1592,7 @@ static struct w83781d_data *w83781d_update_device(struct device *dev)
if
(
time_after
(
jiffies
-
data
->
last_updated
,
(
unsigned
long
)
(
HZ
+
HZ
/
2
))
||
time_before
(
jiffies
,
data
->
last_updated
)
||
!
data
->
valid
)
{
pr_debug
(
"Starting device update
\n
"
);
dev_dbg
(
dev
,
"Starting device update
\n
"
);
for
(
i
=
0
;
i
<=
8
;
i
++
)
{
if
((
data
->
type
==
w83783s
||
data
->
type
==
w83697hf
)
...
...
drivers/pci/quirks.c
View file @
9c574c5a
...
...
@@ -730,6 +730,11 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev)
case
0x0890
:
/* HP Compaq nc6000 */
asus_hides_smbus
=
1
;
}
if
(
dev
->
device
==
PCI_DEVICE_ID_INTEL_82865_HB
)
switch
(
dev
->
subsystem_device
)
{
case
0x12bc
:
/* HP D330L */
asus_hides_smbus
=
1
;
}
}
}
...
...
@@ -1023,12 +1028,14 @@ static struct pci_fixup pci_fixups[] __devinitdata = {
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82845_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82845G_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82850_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82865_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_7205_0
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82855PM_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82855GM_HB
,
asus_hides_smbus_hostbridge
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801DB_0
,
asus_hides_smbus_lpc
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801BA_0
,
asus_hides_smbus_lpc
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801DB_12
,
asus_hides_smbus_lpc
},
{
PCI_FIXUP_HEADER
,
PCI_VENDOR_ID_INTEL
,
PCI_DEVICE_ID_INTEL_82801EB_0
,
asus_hides_smbus_lpc
},
#ifdef CONFIG_SCSI_SATA
/* Fixup BIOSes that configure Parallel ATA (PATA / IDE) and
...
...
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