linux-i2c.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] i2c multiplexer driver for Proliant microserver N36L
@ 2011-11-25 22:07 Eddi De Pieri
       [not found] ` <CAKdnbx7xeygkOK=BR+3vUrWT3GEt=PZrxgrEMvEB5nkOfAF0bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 28+ messages in thread
From: Eddi De Pieri @ 2011-11-25 22:07 UTC (permalink / raw)
  To: linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	lm-sensors-GZX6beZjE8VD60Wz+7aTrA

[-- Attachment #1: Type: text/plain, Size: 4016 bytes --]

This patch add support to multiplexed smbus for proliant microserver
N36L and may be applicable to other configuration based on sb8xx
southbus.

root@proliant:/usr/src/lm-sensors/eddi# i2cdetect -l
i2c-0   smbus           SMBus piix4 adapter (SDA0)              SMBus adapter
i2c-1   smbus           SMBus piix4 adapter (SDA2)              SMBus adapter
i2c-2   smbus           SMBus piix4 adapter (SDA3)              SMBus adapter
i2c-3   smbus           SMBus piix4 adapter (SDA4)              SMBus adapter
root@proliant:/usr/src/lm-sensors/eddi#

yes SDA1 is reserved... so i can't multiplex it

root@proliant:/usr/src/lm-sensors/eddi# sensors
k10temp-pci-00c3
Adapter: PCI adapter
temp1:       +24.5°C  (high = +70.0°C, crit = +100.0°C)

w83795adg-i2c-1-2f
Adapter: SMBus piix4 adapter (SDA2)
in0:         +1.02 V  (min =  +0.00 V, max =  +2.05 V)
in1:         +1.52 V  (min =  +0.00 V, max =  +2.05 V)
in2:         +1.10 V  (min =  +0.00 V, max =  +2.05 V)
in3:         +0.89 V  (min =  +0.00 V, max =  +2.05 V)
in12:        +3.35 V  (min =  +0.00 V, max =  +6.14 V)
in13:        +3.28 V  (min =  +0.00 V, max =  +6.14 V)
fan1:        703 RPM  (min =  329 RPM)
temp1:       +23.0°C  (high = +109.0°C, hyst = +109.0°C)
                      (crit = +109.0°C, hyst = +109.0°C)  sensor = thermal diode
temp2:       +33.2°C  (high = +105.0°C, hyst = +105.0°C)
                      (crit = +105.0°C, hyst = +105.0°C)  sensor = thermal diode
temp5:       +14.0°C  (high = +39.0°C, hyst = +39.0°C)
                      (crit = +44.0°C, hyst = +44.0°C)  sensor = thermistor
beep_enable:disabled

jc42-i2c-0-18
Adapter: SMBus piix4 adapter (SDA0)
temp1:       +20.5°C  (low  =  +0.0°C, high =  +0.0°C)  ALARM
                      (crit =  +0.0°C, hyst =  +0.0°C)  ALARM


root@proliant:/usr/src/lm-sensors/eddi# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

root@proliant:/usr/src/lm-sensors/eddi# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- 61 -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

root@proliant:/usr/src/lm-sensors/eddi# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- 4c -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

root@proliant:/usr/src/lm-sensors/eddi# i2cdetect -y 3
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

pay attention that the msleep seems to be really needed...

Signed-off-by: Eddi De Pieri <eddi-soWH+0lSOSbR7s880joybQ@public.gmane.org>

Regards,

Eddi

[-- Attachment #2: proliant-microserver-n36l.diff --]
[-- Type: application/octet-stream, Size: 9806 bytes --]

diff -u -N -r 2.6.32.orig/i2c-piix4.c 2.6.32/i2c-piix4.c
--- 2.6.32.orig/i2c-piix4.c	2011-11-16 17:07:03.000000000 +0100
+++ 2.6.32/i2c-piix4.c	2011-11-16 15:21:17.000000000 +0100
@@ -97,7 +97,8 @@
 static unsigned short piix4_smba;
 static int srvrworks_csb5_delay;
 static struct pci_driver piix4_driver;
-static struct i2c_adapter piix4_adapter;
+struct i2c_adapter piix4_adapter;
+EXPORT_SYMBOL_GPL(piix4_adapter);
 
 static struct dmi_system_id __devinitdata piix4_dmi_blacklist[] = {
 	{
@@ -246,10 +247,22 @@
 			"0x%x already in use!\n", smba_idx);
 		return -EBUSY;
 	}
-	outb_p(smb_en, smba_idx);
-	smba_en_lo = inb_p(smba_idx + 1);
-	outb_p(smb_en + 1, smba_idx);
-	smba_en_hi = inb_p(smba_idx + 1);
+	outb_p(smb_en, smba_idx); 		//seleziono il registro 0x2c
+	smba_en_lo = inb_p(smba_idx + 1);	//leggo il dato L del registro 0x2c
+	outb_p(smb_en + 1, smba_idx);		//seleziono il registro 0x2c + 1
+	smba_en_hi = inb_p(smba_idx + 1);	//leggo il dato H del registro 0x2c
+
+	outb_p(smb_en, smba_idx); 		//seleziono il registro 0x2c
+	outb_p(smba_en_lo & 0xF9 , smba_idx + 1); //seleziono la porta 0 00 0
+	outb_p(smb_en + 1, smba_idx);		//seleziono il registro 0x2c + 1
+	outb_p(smba_en_hi, smba_idx + 1);
+
+	outb_p(smb_en, smba_idx); 		//seleziono il registro 0x2c
+	smba_en_lo = inb_p(smba_idx + 1);	//leggo il dato L del registro 0x2c
+	outb_p(smb_en + 1, smba_idx);		//seleziono il registro 0x2c + 1
+	smba_en_hi = inb_p(smba_idx + 1);	//leggo il dato H del registro 0x2c
+
+
 	release_region(smba_idx, 2);
 
 	if ((smba_en_lo & 1) == 0) {
@@ -258,6 +271,8 @@
 		return -ENODEV;
 	}
 
+	dev_info(&PIIX4_dev->dev,"Selected Default Smbus Port 0x%x", (smba_en_lo & 0x6) >> 1);
+
 	piix4_smba = ((smba_en_hi << 8) | smba_en_lo) & 0xffe0;
 	if (acpi_check_region(piix4_smba, SMBIOSIZE, piix4_driver.name))
 		return -ENODEV;
@@ -466,7 +481,7 @@
 	.functionality	= piix4_func,
 };
 
-static struct i2c_adapter piix4_adapter = {
+struct i2c_adapter piix4_adapter = {
 	.owner		= THIS_MODULE,
 	.class		= I2C_CLASS_HWMON | I2C_CLASS_SPD,
 	.algo		= &smbus_algorithm,
diff -u -N -r 2.6.32.orig/i2c-piix4-n36l.c 2.6.32/i2c-piix4-n36l.c
--- 2.6.32.orig/i2c-piix4-n36l.c	1970-01-01 01:00:00.000000000 +0100
+++ 2.6.32/i2c-piix4-n36l.c	2011-11-16 16:02:01.000000000 +0100
@@ -0,0 +1,247 @@
+/*
+ * i2c-piix4-n36l.c - i2c-piix4 extras for the HP proliant microserver n36l motherboard
+ *
+ * Copyright (C) 2004, 2008 Jean Delvare <khali@linux-fr.org>
+ * Copyright (C) 2011  Eddi De Pieri <eddi@depieri.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+ 
+/*
+ * We select the channels by sending commands to the sb800 southbus
+ * the selection bit
+ * http://support.amd.com/us/Embedded_TechDocs/45482.pdf
+ *  Smbus0En - RW – 16 bits - [PM_Reg: 2Ch]
+ *  Field Name Bits Default Description
+ *  SmBus0En 0 0b Set to 1 to enable SMBUS0 function and decoding.
+ *  SmBus0Sel 2:1 00b SmBus port selection when PM_Reg 2Fh bit 0 is set to 0
+ *  00: Port 0
+ *  01: Port 2
+ *  10: Port 3
+ *  11: Port 4
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/slab.h>
+#include <linux/init.h>
+#include <linux/i2c.h>
+#include <linux/mutex.h>
+#include <asm/io.h>
+
+extern struct i2c_adapter piix4_adapter;
+
+static struct i2c_adapter *n36l_adapter;
+static struct i2c_algorithm *n36l_algo;
+
+/* Wrapper access functions for multiplexed SMBus */
+static DEFINE_MUTEX(piix4_lock);
+
+/* We remember the last used channels combination so as to only switch
+   channels when it is really needed. This greatly reduces the SMBus
+   overhead, but also assumes that nobody will be writing to the PCA9556
+   in our back. */
+static u8 last_channels;
+
+static inline s32 piix4_access_channel(struct i2c_adapter * adap, u16 addr,
+					unsigned short flags, char read_write,
+					u8 command, int size,
+					union i2c_smbus_data * data,
+					u8 channels)
+{
+	int error;
+	unsigned short smba_idx = 0xcd6;
+	u8 smba_en_lo, smba_en_hi, smb_en = 0x2c;
+
+	mutex_lock(&piix4_lock);
+
+	if (last_channels != channels) {
+		union i2c_smbus_data mplxdata;
+		mplxdata.byte = channels;
+
+		/* Determine the address of the SMBus areas */
+		if (!request_region(smba_idx, 2, "smba_idx")) {
+			dev_err(&piix4_adapter.dev, "SMBus base address index region "
+				"0x%x already in use!\n", smba_idx);
+			return -EBUSY;
+		}
+
+		outb_p(smb_en, smba_idx); 		//seleziono il registro 0x2c
+		smba_en_lo = inb_p(smba_idx + 1);	//leggo il dato L del registro 0x2c
+		outb_p(smb_en + 1, smba_idx);		//seleziono il registro 0x2c + 1
+		smba_en_hi = inb_p(smba_idx + 1);	//leggo il dato H del registro 0x2c
+	
+		msleep(50);
+		outb_p(smb_en, smba_idx); 		//seleziono il registro 0x2c
+		outb_p((smba_en_lo & 0xF9 )+ ( channels << 1) , smba_idx + 1); //seleziono la porta 0 00 0
+		outb_p(smb_en + 1, smba_idx);		//seleziono il registro 0x2c + 1
+		outb_p(smba_en_hi, smba_idx + 1);
+
+		msleep(50);
+
+		release_region(smba_idx, 2);
+
+		dev_info(&piix4_adapter.dev,"Selected Smbus Port 0x%x", (smba_en_lo & 0x6) >> 1);
+
+		last_channels = channels;
+
+	}
+	
+	error = piix4_adapter.algo->smbus_xfer(adap, addr, flags, read_write,
+					      command, size, data);
+
+
+	mutex_unlock(&piix4_lock);
+	return error;
+}
+
+static s32 piix4_access_virt0(struct i2c_adapter * adap, u16 addr,
+			       unsigned short flags, char read_write,
+			       u8 command, int size,
+			       union i2c_smbus_data * data)
+{
+	return piix4_access_channel(adap, addr, flags, read_write, command,
+				     size, data, 0);
+}
+
+static s32 piix4_access_virt1(struct i2c_adapter * adap, u16 addr,
+			       unsigned short flags, char read_write,
+			       u8 command, int size,
+			       union i2c_smbus_data * data)
+{
+	return piix4_access_channel(adap, addr, flags, read_write, command,
+				     size, data, 1);
+}
+
+static s32 piix4_access_virt2(struct i2c_adapter * adap, u16 addr,
+			       unsigned short flags, char read_write,
+			       u8 command, int size,
+			       union i2c_smbus_data * data)
+{
+	return piix4_access_channel(adap, addr, flags, read_write, command,
+				     size, data, 2);
+}
+
+static s32 piix4_access_virt3(struct i2c_adapter * adap, u16 addr,
+			       unsigned short flags, char read_write,
+			       u8 command, int size,
+			       union i2c_smbus_data * data)
+{
+	return piix4_access_channel(adap, addr, flags, read_write, command,
+				     size, data, 3);
+}
+
+static int __init piix4_n36l_init(void)
+{
+	int i, error;
+
+	if (!piix4_adapter.dev.parent)
+		return -ENODEV;
+
+	printk(KERN_INFO "Configure the AMD SB800 Multiplexer\n");
+
+	/* Unregister physical bus */
+	error = i2c_del_adapter(&piix4_adapter);
+	if (error) {
+		dev_err(&piix4_adapter.dev, "Physical bus removal failed\n");
+		goto ERROR0;
+	}
+
+	printk(KERN_INFO "Enabling SMBus multiplexing for Hp Proliant Microserver N36l\n");
+	/* Define the 4 virtual adapters and algorithms structures */
+	if (!(n36l_adapter = kzalloc(5 * sizeof(struct i2c_adapter),
+				      GFP_KERNEL))) {
+		error = -ENOMEM;
+		goto ERROR1;
+	}
+	if (!(n36l_algo = kzalloc(5 * sizeof(struct i2c_algorithm),
+				   GFP_KERNEL))) {
+		error = -ENOMEM;
+		goto ERROR2;
+	}
+
+	/* Fill in the new structures */
+	n36l_algo[0] = *(piix4_adapter.algo);
+	n36l_algo[0].smbus_xfer = piix4_access_virt0;
+	n36l_adapter[0] = piix4_adapter;
+	snprintf(n36l_adapter[0].name, sizeof(n36l_adapter[0].name),
+		 "SMBus piix4 adapter (SDA0)");
+	n36l_adapter[0].algo = n36l_algo;
+	n36l_adapter[0].dev.parent = piix4_adapter.dev.parent;
+	for (i = 1; i < 4; i++) {
+		n36l_algo[i] = *(piix4_adapter.algo);
+		n36l_adapter[i] = piix4_adapter;
+		snprintf(n36l_adapter[i].name, sizeof(n36l_adapter[i].name),
+			 "SMBus piix4 adapter (SDA%d)", i + 1);
+		n36l_adapter[i].algo = n36l_algo+i;
+		n36l_adapter[i].dev.parent = piix4_adapter.dev.parent;
+	}
+	n36l_algo[1].smbus_xfer = piix4_access_virt1;
+	n36l_algo[2].smbus_xfer = piix4_access_virt2;
+	n36l_algo[3].smbus_xfer = piix4_access_virt3;
+
+	/* Register virtual adapters */
+	for (i = 0; i < 4; i++) {
+		error = i2c_add_adapter(n36l_adapter+i);
+		if (error) {
+			printk(KERN_ERR "i2c-piix4-n36l: "
+			       "Virtual adapter %d registration "
+			       "failed, module not inserted\n", i);
+			for (i--; i >= 0; i--)
+				i2c_del_adapter(n36l_adapter+i);
+			goto ERROR3;
+		}
+	}
+
+	return 0;
+
+ERROR3:
+	kfree(n36l_algo);
+	n36l_algo = NULL;
+ERROR2:
+	kfree(n36l_adapter);
+	n36l_adapter = NULL;
+ERROR1:
+	/* Restore physical bus */
+	i2c_add_adapter(&piix4_adapter);
+ERROR0:
+	return error;
+}
+
+static void __exit piix4_n36l_exit(void)
+{
+	if (n36l_adapter) {
+		int i;
+
+		for (i = 0; i < 5; i++)
+			i2c_del_adapter(n36l_adapter+i);
+		kfree(n36l_adapter);
+		n36l_adapter = NULL;
+	}
+	kfree(n36l_algo);
+	n36l_algo = NULL;
+
+	/* Restore physical bus */
+	if (i2c_add_adapter(&piix4_adapter))
+		printk(KERN_ERR "i2c-piix4-n36l: "
+		       "Physical bus restoration failed\n");
+}
+
+MODULE_AUTHOR("Eddi De Pieri <eddi@depieri.net");
+MODULE_DESCRIPTION("n36l SMBus multiplexing");
+MODULE_LICENSE("GPL");
+
+module_init(piix4_n36l_init);
+module_exit(piix4_n36l_exit);

^ permalink raw reply	[flat|nested] 28+ messages in thread
* Re: [PATCH] i2c-piix4: support multiple PIIX4 SMBus hosts
@ 2012-06-04  7:16 Jean Delvare
  2012-06-05  1:49 ` [PATCH 0/3] Multiple piix4-compatible SMBus support Andrew Armenia
  0 siblings, 1 reply; 28+ messages in thread
From: Jean Delvare @ 2012-06-04  7:16 UTC (permalink / raw)
  To: Andrew Armenia
  Cc: Ben Dooks, Wolfram Sang, linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

Hi Andrew,

On Fri,  1 Jun 2012 14:16:12 -0400, Andrew Armenia wrote:
> Some AMD chipsets have a second PIIX4-compatible host adapter accessible
> through a second set of registers (e.g. SP5100). Moved the global base
> address variable to an extension of struct i2c_adapter; added logic
> to detect chipset known to have this feature. Tested on ASUS KCMA-D8 board.

This would be much easier to review if you would split this change into
two patches, one moving the per-adapter settings out of the global
scope, and one adding support for the second base address.

Furthermore, the use of container_of seems inappropriate here, as there
is a proper interface for per-adapter attributes: i2c_set_adapdata() and
i2c_get_adapdata().

-- 
Jean Delvare

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2012-08-29 17:44 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-25 22:07 [PATCH] i2c multiplexer driver for Proliant microserver N36L Eddi De Pieri
     [not found] ` <CAKdnbx7xeygkOK=BR+3vUrWT3GEt=PZrxgrEMvEB5nkOfAF0bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-11-27 22:55   ` Ben Dooks
     [not found]     ` <20111127225514.GO19115-SMNkleLxa3Z6Wcw2j4pizdi2O/JbrIOy@public.gmane.org>
2011-12-03 15:31       ` Eddi De Pieri
2011-12-03 16:27         ` [lm-sensors] " Guenter Roeck
     [not found]           ` <20111203162757.GA24302-IzeFyvvaP7pWk0Htik3J/w@public.gmane.org>
2011-12-03 16:42             ` Eddi De Pieri
     [not found]               ` <CAKdnbx54R9t-mS9-EvyT-618wVp-YH0YDO++=m5t-JqR6h=GCw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-03 17:08                 ` Jean Delvare
     [not found]                   ` <20111203180819.2ddbcb3a-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2011-12-05 22:57                     ` Eddi De Pieri
     [not found]                       ` <CAKdnbx5V=qfa5dshRudHx+M3o8Eb6qJXCVG+ZBaBwCeKaoQYNA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-06  8:39                         ` Jean Delvare
     [not found]                           ` <20111206093906.21dccf8d-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2011-12-07 14:57                             ` Eddi De Pieri
2012-02-24 18:56                           ` Thomas Brandon
     [not found]                             ` <loom.20120215T165236-509-eS7Uydv5nfjZ+VzJOa5vwg@public.gmane.org>
2012-02-24 19:04                               ` Thomas Brandon
     [not found]                                 ` <CAM5MpD5R4xde4Li1NCDoErisXs7oRMAgW7swuCwga80MkU3VMw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-02-27  8:42                                   ` Thomas Brandon
     [not found]                                     ` <CAM5MpD46pT1N2f5yZb0yW1O8CjH7B969TmvxDZztMfwBoyom3g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-03-14  8:28                                       ` Eddi De Pieri
     [not found]                                         ` <CAKdnbx7tiMaU1c971a+P2vhE_owO_zd8EXhKR7cAwrH=evVQ6g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-08-29 17:44                                           ` Jean Delvare
2012-06-13  5:44                                       ` Eddi De Pieri
     [not found]                                         ` <CAKdnbx4MUfU086F7navt52WaoF4q_+3G+DHn7u2qic+FU50OiA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-13  7:47                                           ` Jean Delvare
     [not found]                                             ` <20120613094739.360967aa-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-06-13 16:59                                               ` [PATCH 0/3] i2c-piix4: Multiple piix4-compatible SMBus support (revised) Andrew Armenia
2012-06-13 16:59                                                 ` [PATCH 1/3] i2c-piix4: eliminate piix4_smba global variable Andrew Armenia
     [not found]                                                   ` <1339606749-4578-2-git-send-email-andrew-Lwj1yN59in/Ib2jZbfQ/kQ@public.gmane.org>
2012-06-13 19:37                                                     ` Jean Delvare
     [not found]                                                 ` <1339606749-4578-1-git-send-email-andrew-Lwj1yN59in/Ib2jZbfQ/kQ@public.gmane.org>
2012-06-13 16:59                                                   ` [PATCH 2/3] i2c-piix4: separate registration and probing code Andrew Armenia
     [not found]                                                     ` <1339606749-4578-3-git-send-email-andrew-Lwj1yN59in/Ib2jZbfQ/kQ@public.gmane.org>
2012-06-14 19:38                                                       ` Jean Delvare
2012-06-13 16:59                                                 ` [PATCH 3/3] i2c-piix4: support AMD auxiliary SMBus controller Andrew Armenia
     [not found]                                                   ` <1339606749-4578-4-git-send-email-andrew-Lwj1yN59in/Ib2jZbfQ/kQ@public.gmane.org>
2012-06-15  8:31                                                     ` Jean Delvare
     [not found]                                                       ` <20120615103153.3ea7c009-R0o5gVi9kd7kN2dkZ6Wm7A@public.gmane.org>
2012-06-15 13:43                                                         ` Andrew Armenia
     [not found]                                                           ` <CA+jCKRVsMNf7Yj7fP4c6+4ff__v5qsea7rYYqHv25XFBi8v9yg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-06-16  6:51                                                             ` Jean Delvare
2012-06-15  9:22                                               ` [PATCH] i2c multiplexer driver for Proliant microserver N36L Jean Delvare
  -- strict thread matches above, loose matches on Subject: below --
2012-06-04  7:16 [PATCH] i2c-piix4: support multiple PIIX4 SMBus hosts Jean Delvare
2012-06-05  1:49 ` [PATCH 0/3] Multiple piix4-compatible SMBus support Andrew Armenia
     [not found]   ` <1338860964-10803-1-git-send-email-andrew-Lwj1yN59in/Ib2jZbfQ/kQ@public.gmane.org>
2012-06-05  1:49     ` [PATCH 2/3] i2c-piix4: separate registration and probing code Andrew Armenia
2012-06-12 12:10       ` Jean Delvare

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).