Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh-latest
This commit is contained in:
@@ -134,10 +134,15 @@
|
||||
SMBHSTSTS_BUS_ERR | SMBHSTSTS_DEV_ERR | \
|
||||
SMBHSTSTS_INTR)
|
||||
|
||||
/* Older devices have their ID defined in <linux/pci_ids.h> */
|
||||
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS 0x1c22
|
||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS 0x1d22
|
||||
/* Patsburg also has three 'Integrated Device Function' SMBus controllers */
|
||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF0 0x1d70
|
||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1 0x1d71
|
||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2 0x1d72
|
||||
#define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS 0x2330
|
||||
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS 0x3b30
|
||||
|
||||
struct i801_priv {
|
||||
struct i2c_adapter adapter;
|
||||
|
@@ -560,15 +560,18 @@ static struct i2c_adapter mpc_ops = {
|
||||
.timeout = HZ,
|
||||
};
|
||||
|
||||
static const struct of_device_id mpc_i2c_of_match[];
|
||||
static int __devinit fsl_i2c_probe(struct platform_device *op)
|
||||
{
|
||||
const struct of_device_id *match;
|
||||
struct mpc_i2c *i2c;
|
||||
const u32 *prop;
|
||||
u32 clock = MPC_I2C_CLOCK_LEGACY;
|
||||
int result = 0;
|
||||
int plen;
|
||||
|
||||
if (!op->dev.of_match)
|
||||
match = of_match_device(mpc_i2c_of_match, &op->dev);
|
||||
if (!match)
|
||||
return -EINVAL;
|
||||
|
||||
i2c = kzalloc(sizeof(*i2c), GFP_KERNEL);
|
||||
@@ -605,8 +608,8 @@ static int __devinit fsl_i2c_probe(struct platform_device *op)
|
||||
clock = *prop;
|
||||
}
|
||||
|
||||
if (op->dev.of_match->data) {
|
||||
struct mpc_i2c_data *data = op->dev.of_match->data;
|
||||
if (match->data) {
|
||||
struct mpc_i2c_data *data = match->data;
|
||||
data->setup(op->dev.of_node, i2c, clock, data->prescaler);
|
||||
} else {
|
||||
/* Backwards compatibility */
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------------------ *
|
||||
* i2c-parport.c I2C bus over parallel port *
|
||||
* ------------------------------------------------------------------------ *
|
||||
Copyright (C) 2003-2010 Jean Delvare <khali@linux-fr.org>
|
||||
Copyright (C) 2003-2011 Jean Delvare <khali@linux-fr.org>
|
||||
|
||||
Based on older i2c-philips-par.c driver
|
||||
Copyright (C) 1995-2000 Simon G. Vogl
|
||||
@@ -33,6 +33,8 @@
|
||||
#include <linux/i2c-algo-bit.h>
|
||||
#include <linux/i2c-smbus.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/mutex.h>
|
||||
#include "i2c-parport.h"
|
||||
|
||||
/* ----- Device list ------------------------------------------------------ */
|
||||
@@ -43,10 +45,11 @@ struct i2c_par {
|
||||
struct i2c_algo_bit_data algo_data;
|
||||
struct i2c_smbus_alert_setup alert_data;
|
||||
struct i2c_client *ara;
|
||||
struct i2c_par *next;
|
||||
struct list_head node;
|
||||
};
|
||||
|
||||
static struct i2c_par *adapter_list;
|
||||
static LIST_HEAD(adapter_list);
|
||||
static DEFINE_MUTEX(adapter_list_lock);
|
||||
|
||||
/* ----- Low-level parallel port access ----------------------------------- */
|
||||
|
||||
@@ -228,8 +231,9 @@ static void i2c_parport_attach (struct parport *port)
|
||||
}
|
||||
|
||||
/* Add the new adapter to the list */
|
||||
adapter->next = adapter_list;
|
||||
adapter_list = adapter;
|
||||
mutex_lock(&adapter_list_lock);
|
||||
list_add_tail(&adapter->node, &adapter_list);
|
||||
mutex_unlock(&adapter_list_lock);
|
||||
return;
|
||||
|
||||
ERROR1:
|
||||
@@ -241,11 +245,11 @@ ERROR0:
|
||||
|
||||
static void i2c_parport_detach (struct parport *port)
|
||||
{
|
||||
struct i2c_par *adapter, *prev;
|
||||
struct i2c_par *adapter, *_n;
|
||||
|
||||
/* Walk the list */
|
||||
for (prev = NULL, adapter = adapter_list; adapter;
|
||||
prev = adapter, adapter = adapter->next) {
|
||||
mutex_lock(&adapter_list_lock);
|
||||
list_for_each_entry_safe(adapter, _n, &adapter_list, node) {
|
||||
if (adapter->pdev->port == port) {
|
||||
if (adapter->ara) {
|
||||
parport_disable_irq(port);
|
||||
@@ -259,14 +263,11 @@ static void i2c_parport_detach (struct parport *port)
|
||||
|
||||
parport_release(adapter->pdev);
|
||||
parport_unregister_device(adapter->pdev);
|
||||
if (prev)
|
||||
prev->next = adapter->next;
|
||||
else
|
||||
adapter_list = adapter->next;
|
||||
list_del(&adapter->node);
|
||||
kfree(adapter);
|
||||
return;
|
||||
}
|
||||
}
|
||||
mutex_unlock(&adapter_list_lock);
|
||||
}
|
||||
|
||||
static struct parport_driver i2c_parport_driver = {
|
||||
|
@@ -65,7 +65,7 @@ static inline void i2c_pnx_arm_timer(struct i2c_pnx_algo_data *alg_data)
|
||||
jiffies, expires);
|
||||
|
||||
timer->expires = jiffies + expires;
|
||||
timer->data = (unsigned long)&alg_data;
|
||||
timer->data = (unsigned long)alg_data;
|
||||
|
||||
add_timer(timer);
|
||||
}
|
||||
|
Reference in New Issue
Block a user