Merge branch 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging
* 'i2c-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: i2c-parport: Fix adapter list handling i2c-i801: Move device ID definitions to driver
This commit is contained in:
@@ -134,10 +134,15 @@
|
|||||||
SMBHSTSTS_BUS_ERR | SMBHSTSTS_DEV_ERR | \
|
SMBHSTSTS_BUS_ERR | SMBHSTSTS_DEV_ERR | \
|
||||||
SMBHSTSTS_INTR)
|
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 */
|
/* 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_IDF0 0x1d70
|
||||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1 0x1d71
|
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF1 0x1d71
|
||||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS_IDF2 0x1d72
|
#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 i801_priv {
|
||||||
struct i2c_adapter adapter;
|
struct i2c_adapter adapter;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
/* ------------------------------------------------------------------------ *
|
/* ------------------------------------------------------------------------ *
|
||||||
* i2c-parport.c I2C bus over parallel port *
|
* 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
|
Based on older i2c-philips-par.c driver
|
||||||
Copyright (C) 1995-2000 Simon G. Vogl
|
Copyright (C) 1995-2000 Simon G. Vogl
|
||||||
@@ -33,6 +33,8 @@
|
|||||||
#include <linux/i2c-algo-bit.h>
|
#include <linux/i2c-algo-bit.h>
|
||||||
#include <linux/i2c-smbus.h>
|
#include <linux/i2c-smbus.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <linux/list.h>
|
||||||
|
#include <linux/mutex.h>
|
||||||
#include "i2c-parport.h"
|
#include "i2c-parport.h"
|
||||||
|
|
||||||
/* ----- Device list ------------------------------------------------------ */
|
/* ----- Device list ------------------------------------------------------ */
|
||||||
@@ -43,10 +45,11 @@ struct i2c_par {
|
|||||||
struct i2c_algo_bit_data algo_data;
|
struct i2c_algo_bit_data algo_data;
|
||||||
struct i2c_smbus_alert_setup alert_data;
|
struct i2c_smbus_alert_setup alert_data;
|
||||||
struct i2c_client *ara;
|
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 ----------------------------------- */
|
/* ----- Low-level parallel port access ----------------------------------- */
|
||||||
|
|
||||||
@@ -228,8 +231,9 @@ static void i2c_parport_attach (struct parport *port)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add the new adapter to the list */
|
/* Add the new adapter to the list */
|
||||||
adapter->next = adapter_list;
|
mutex_lock(&adapter_list_lock);
|
||||||
adapter_list = adapter;
|
list_add_tail(&adapter->node, &adapter_list);
|
||||||
|
mutex_unlock(&adapter_list_lock);
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ERROR1:
|
ERROR1:
|
||||||
@@ -241,11 +245,11 @@ ERROR0:
|
|||||||
|
|
||||||
static void i2c_parport_detach (struct parport *port)
|
static void i2c_parport_detach (struct parport *port)
|
||||||
{
|
{
|
||||||
struct i2c_par *adapter, *prev;
|
struct i2c_par *adapter, *_n;
|
||||||
|
|
||||||
/* Walk the list */
|
/* Walk the list */
|
||||||
for (prev = NULL, adapter = adapter_list; adapter;
|
mutex_lock(&adapter_list_lock);
|
||||||
prev = adapter, adapter = adapter->next) {
|
list_for_each_entry_safe(adapter, _n, &adapter_list, node) {
|
||||||
if (adapter->pdev->port == port) {
|
if (adapter->pdev->port == port) {
|
||||||
if (adapter->ara) {
|
if (adapter->ara) {
|
||||||
parport_disable_irq(port);
|
parport_disable_irq(port);
|
||||||
@@ -259,14 +263,11 @@ static void i2c_parport_detach (struct parport *port)
|
|||||||
|
|
||||||
parport_release(adapter->pdev);
|
parport_release(adapter->pdev);
|
||||||
parport_unregister_device(adapter->pdev);
|
parport_unregister_device(adapter->pdev);
|
||||||
if (prev)
|
list_del(&adapter->node);
|
||||||
prev->next = adapter->next;
|
|
||||||
else
|
|
||||||
adapter_list = adapter->next;
|
|
||||||
kfree(adapter);
|
kfree(adapter);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mutex_unlock(&adapter_list_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct parport_driver i2c_parport_driver = {
|
static struct parport_driver i2c_parport_driver = {
|
||||||
|
@@ -2477,15 +2477,12 @@
|
|||||||
#define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21
|
#define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21
|
||||||
#define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30
|
#define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30
|
||||||
#define PCI_DEVICE_ID_INTEL_IOAT 0x1a38
|
#define PCI_DEVICE_ID_INTEL_IOAT 0x1a38
|
||||||
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_SMBUS 0x1c22
|
|
||||||
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN 0x1c41
|
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN 0x1c41
|
||||||
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX 0x1c5f
|
#define PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX 0x1c5f
|
||||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_SMBUS 0x1d22
|
|
||||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0 0x1d40
|
#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_0 0x1d40
|
||||||
#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1 0x1d41
|
#define PCI_DEVICE_ID_INTEL_PATSBURG_LPC_1 0x1d41
|
||||||
#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN 0x2310
|
#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MIN 0x2310
|
||||||
#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX 0x231f
|
#define PCI_DEVICE_ID_INTEL_DH89XXCC_LPC_MAX 0x231f
|
||||||
#define PCI_DEVICE_ID_INTEL_DH89XXCC_SMBUS 0x2330
|
|
||||||
#define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410
|
#define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410
|
||||||
#define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411
|
#define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411
|
||||||
#define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413
|
#define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413
|
||||||
@@ -2696,7 +2693,6 @@
|
|||||||
#define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60
|
#define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60
|
||||||
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN 0x3b00
|
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN 0x3b00
|
||||||
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX 0x3b1f
|
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX 0x3b1f
|
||||||
#define PCI_DEVICE_ID_INTEL_5_3400_SERIES_SMBUS 0x3b30
|
|
||||||
#define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f
|
#define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f
|
||||||
#define PCI_DEVICE_ID_INTEL_5100_16 0x65f0
|
#define PCI_DEVICE_ID_INTEL_5100_16 0x65f0
|
||||||
#define PCI_DEVICE_ID_INTEL_5100_21 0x65f5
|
#define PCI_DEVICE_ID_INTEL_5100_21 0x65f5
|
||||||
|
Reference in New Issue
Block a user