Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-08-29 Thread Jean Delvare
Eddi, Thomas,

On Wed, 14 Mar 2012 09:28:54 +0100, Eddi De Pieri wrote:
 Hi Thomas,
 
  With the updated patch and the modified sensors-detect I have been
  able to probe all ports and have not encountered the power issue
  again. If no further issues are identified I will seperate the patch
  into stages and submit for review.
 
 I confirm that your patch works well on my proliant n36l and solve the
 power issue.
 
 Thank you for rewrote my patch.

Recent mainline changes to the i2c-piix4 driver make the patch no
longer apply, so I can't push it upstream. Can either of you please
rebase the patch on top of Linus' latest kernel and resubmit?

Thanks,
-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-06-15 Thread Jean Delvare
Hi Eddi,

On Wed, 13 Jun 2012 09:47:39 +0200, Jean Delvare wrote:
 On Wed, 13 Jun 2012 07:44:34 +0200, Eddi De Pieri wrote:
  It works for me too
  
  What about including this patch in the mainline?
 
 Yesterday I reviewed a patch set adding support for the auxiliary SMBus
 controller on the SB600/SB700:
 http://marc.info/?t=13388612451r=1w=2
 http://marc.info/?t=13388612434r=1w=2
 http://marc.info/?t=13388612433r=1w=2
 
 It touches the exact same area as touched by your patch, so they will
 conflict. Best would be to rebase the SB800 multiport support patch on
 top of the other patch set.

This is done now, you can download my current patch stack at:
http://khali.linux-fr.org/devel/linux-3/jdelvare-i2c/
or
http://khali.linux-fr.org/devel/linux-3/jdelvare-i2c.tar.gz

Could you please rebase your patch on top of that and resubmit? Thanks.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-06-13 Thread Jean Delvare
Hi Eddi,

On Wed, 13 Jun 2012 07:44:34 +0200, Eddi De Pieri wrote:
 It works for me too
 
 What about including this patch in the mainline?

Yesterday I reviewed a patch set adding support for the auxiliary SMBus
controller on the SB600/SB700:
http://marc.info/?t=13388612451r=1w=2
http://marc.info/?t=13388612434r=1w=2
http://marc.info/?t=13388612433r=1w=2

It touches the exact same area as touched by your patch, so they will
conflict. Best would be to rebase the SB800 multiport support patch on
top of the other patch set.

Andrew, do you think you can update per my comments and resubmit your
patch set quickly, so that we can then proceed with the SB800 multiport
support before the next merge window?

Thanks,
-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-06-12 Thread Eddi De Pieri
It works for me too

What about including this patch in the mainline?

Regards

Eddi

Tested-by: Eddi De Pieri e...@depieri.net

On Mon, Feb 27, 2012 at 9:42 AM, Thomas Brandon tbrando...@gmail.com wrote:

 On Sun, Feb 26, 2012 at 10:30 PM, Mike Shestyrev wrote:
  Hi Thomas,
 
  I've applied you patch to i2c-piix4.c, kernel 2.26.33, the machine is
  N40L.
  It works!! Thank you.
  When probing SDA4 panel LEDs are turned off ant the power button stops
  to work.
  SMBus pins can be programmed as GPIO optionally, and the guess is that
  SMBus pins from some channel(s) are used to drive LEDs and to read
  buttons,
  and were programmed as GPIO by BIOS .
 
  Is it possible to read already programmed state for each channel
  before initialization?
  If it's GPIO - to skip it, if SMBus mode - to register.
 
  Regards,
  /Mike.

 Thanks for testing Mike and glad to hear you had some success. Could
 you use Reply to all in Gmail to cc the mailing list.
 It is true that the pins are multiplexed and it looks like SDA4 is not
 being used for SMBus, though it is set to the default which is part of
 the PS2 interface (not present on the N40L) not GPIO. However I don't
 think this is a problem, I would assume that these settings would
 disconnect the SMBus module from those pins, though I could be wrong.
 Further testing shows that the problem was that the port selection was
 being changed by the driver and having the port set to anything other
 than port 0 was causing the problems when restarting. I have now
 modified the driver to restore the default value after each
 transaction which appears to have fixed the problem.

 There remains the problem that running sensors-detect on SDA3 causes a
 bus collision and locks up the bus. This also means you see the same
 reset issues and must remove the power cable to recover. I have
 tracked this down to the ds1621_detect routine performing a word write
 which hangs the chip at 0x4c. Removing this detection routine fixes
 the issue (whatever chip is there is not identified). I gather this is
 not a problem with the driver per se but rather the inherently unsafe
 nature of sensors-detect and it is sensors-detect, if anything, that
 should be modified to fix the issue. I will look into that further and
 move that to the lm_sensors mailing list. For now I have attached a
 modified version of sensors-detect which removes this chip.

 With the updated patch and the modified sensors-detect I have been
 able to probe all ports and have not encountered the power issue
 again. If no further issues are identified I will seperate the patch
 into stages and submit for review.

 Tom.

 --- linux-3.2.1-gentoo-r2/drivers/i2c/busses/i2c-piix4.c        2012-01-05
 10:55:44.0 +1100
 +++ dev/drivers/i2c/busses/i2c-piix4.c  2012-02-27 04:35:11.0
 +1100
 @@ -25,7 +25,10 @@
        AMD Hudson-2
        SMSC Victory66

 -   Note: we assume there can only be one device, with one SMBus
 interface.
 +   Note: we assume there can only be one device.
 +   The device can register multiple i2c_adapters (up to
 PIIX4_MAX_ADAPTERS).
 +   For devices supporting multiple ports the i2c_adapter should provide
 +   an i2c_algorithm to access them.
  */

  #include linux/module.h
 @@ -40,6 +43,7 @@
  #include linux/dmi.h
  #include linux/acpi.h
  #include linux/io.h
 +#include linux/mutex.h


  /* PIIX4 SMBus address offsets */
 @@ -78,6 +82,9 @@
  #define PIIX4_WORD_DATA                0x0C
  #define PIIX4_BLOCK_DATA       0x14

 +/* Multi-port constants */
 +#define PIIX4_MAX_ADAPTERS 4
 +
  /* insmod parameters */

  /* If force is set to anything different from 0, we forcibly enable the
 @@ -97,7 +104,14 @@ MODULE_PARM_DESC(force_addr,
  static unsigned short piix4_smba;
  static int srvrworks_csb5_delay;
  static struct pci_driver piix4_driver;
 -static struct i2c_adapter piix4_adapter;
 +static struct i2c_adapter *piix4_adapters[PIIX4_MAX_ADAPTERS];
 +
 +/* SB800 globals */
 +DEFINE_MUTEX(piix4_mutex_sb800);
 +static u8 piix4_adapter_ports_sb800[4];
 +static const char *piix4_port_names_sb800[4] = {
 +       SDA0, SDA2, SDA3, SDA4
 +};

  static struct dmi_system_id __devinitdata piix4_dmi_blacklist[] = {
        {
 @@ -284,6 +298,8 @@ static int __devinit piix4_setup_sb800(s
        else
                dev_dbg(PIIX4_dev-dev, Using SMI# for SMBus.\n);

 +       mutex_init(piix4_mutex_sb800);
 +
        dev_info(PIIX4_dev-dev,
                 SMBus Host Controller at 0x%x, revision %d\n,
                 piix4_smba, i2ccfg  4);
 @@ -291,27 +307,27 @@ static int __devinit piix4_setup_sb800(s
        return 0;
  }

 -static int piix4_transaction(void)
 +static int piix4_transaction(struct i2c_adapter *adap)
  {
        int temp;
        int result = 0;
        int timeout = 0;

 -       dev_dbg(piix4_adapter.dev, Transaction (pre): CNT=%02x,
 CMD=%02x, 
 +       dev_dbg(adap-dev, Transaction (pre): CNT=%02x, CMD=%02x, 
                ADD=%02x, DAT0=%02x, DAT1=%02x\n, inb_p(SMBHSTCNT),
   

Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-03-14 Thread Eddi De Pieri
Hi Thomas,

 With the updated patch and the modified sensors-detect I have been
 able to probe all ports and have not encountered the power issue
 again. If no further issues are identified I will seperate the patch
 into stages and submit for review.

I confirm that your patch works well on my proliant n36l and solve the
power issue.

Thank you for rewrote my patch.

Regards,
Eddi
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2012-02-24 Thread Thomas Brandon
Jean Delvare khali@... writes:
 You don't need a multiplexer device at all. Please just have i2c-piix4
 driver register 4 i2c_adapter devices for the SB800. This would be a
 3-step process:
 
 1* Turn piix4_adapter to an array, so that it can hold up to 4
i2c_adapter structures.
 2* Add a mutex to prevent concurrent access to the register set. It
should be initialized in piix4_setup_sb800(), taken at the very
beginning of piix4_access() and released at the very end of this
function.
 3* Add support for ports 1, 2 and 3 of the SB800.
 
 This would ideally be 3 incremental patches to make testing and review
 easy. I can help with parts 1 and 2 if you want, as this can be tested
 without a SB800. But it should be fairly easy overall.
 
I have reworked the original patch to (hopefully) fit the structure you suggest.
However I have encountered issues with it that I'm not sure how to solve. The
behaviour is the same under both the original and the modified version of the
patch. When running sensors-detect, SDA0 (i2c-0) and SDA2 (i2c-1) (SDA1 is
reserved for ASF devices and accessed through a seperate controller) scan fine
with the following (edited) output:
Next adapter: SMBus piix4 adapter (SDA0) (i2c-0)
Do you want to scan it? (YES/no/selectively): y
Client found at address 0x18
Probing for `Microchip MCP98243'... Success!
(confidence 5, driver `jc42')
Client found at address 0x19
Probing for `Microchip MCP98243'... Success!
(confidence 5, driver `jc42')
Client found at address 0x50
Probing for `SPD EEPROM'... Yes
(confidence 8, not a hardware monitoring chip)
Client found at address 0x51
Probing for `SPD EEPROM'... Yes
(confidence 8, not a hardware monitoring chip)
Next adapter: SMBus piix4 adapter (SDA2) (i2c-1)
Do you want to scan it? (YES/no/selectively): y
Client found at address 0x2f
Probing for `Nuvoton W83795G/ADG'...Success!
(confidence 8, driver `w83795')

However while scanning SDA3 (i2c-2) sensors-detect finds a client at address
0x4c but no probes are successful and you get kernel output like:
i2c i2c-2: Transaction (pre): CNT=04, CMD=00, ADD=99, DAT0=ff, DAT1=01
i2c i2c-2: Transaction (post): CNT=04, CMD=00, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: Transaction (pre): CNT=04, CMD=00, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: Transaction (post): CNT=04, CMD=00, ADD=99, DAT0=00, DAT1=01
[SNIP]
i2c i2c-2: Transaction (pre): CNT=08, CMD=ac, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: Transaction (post): CNT=08, CMD=ac, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: Transaction (pre): CNT=0c, CMD=aa, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: Transaction (pre): CNT=0c, CMD=aa, ADD=99, DAT0=00, DAT1=01
i2c i2c-2: SMBus Timeout!
i2c i2c-2: Bus collision! SMBus may be locked until next hard reset. (sorry!)
i2c i2c-2: Failed reset at end of transaction (01)
i2c i2c-2: Transaction (post): CNT=0c, CMD=aa, ADD=99, DAT0=00, DAT1=80

Then all subsequent access attempts before a hard reset result in output like:
i2c i2c-2: Transaction (pre): CNT=08, CMD=03, ADD=99, DAT0=00, DAT1=80
i2c i2c-2: SMBus busy (01). Resetting...
i2c i2c-2: Failed! (01)

Additionally, shutdown/restart commands now fail, as does using the power button
on the machine (it turns off but on powering back up the screen doesn't return).
The power cord must be removed before the server will restart. This is as
reported by the original submitter and another tester when the thread was posted
on the lm_sensors list
(http://lists.lm-sensors.org/pipermail/lm-sensors/2011-November/034259.html).
After restarting sensors now work as reported by others.

I'm not quite sure how best to proceed. Any tips on debugging/fixing this are
welcome.

Thomas Brandon

--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-07 Thread Eddi De Pieri
On Tue, Dec 6, 2011 at 9:39 AM, Jean Delvare kh...@linux-fr.org wrote:

 The SMBus multiplexing as it exists on the SB800 is very
 different from what was implemented for the Tyan S4882 and S4985 boards.

Well...
- the Tyan use PCA9556 to select the multiplexed bus...

- SB800 (and SB700) seems to select lines writing the port number
using a particolar protocol.

 In fact, now that I have a SB800 datasheet, I better understand what
 you were doing and how it should be implemented.

 I don't even think you
 need the multiplexer framework for the SB800.

Are you sure?

SB7/8xx has two i2c bus smbus(0) should be accessible to the user
smbus(1) should be reserved to the chipset

 it has 4 almost independent SMBus ports.

smbus(0) may be connected to different physical port but each port
may be routed by the OEM to different function... so these port aren't
really independent.

how to probe this? perhaps by reading DMI?

 1* Turn piix4_adapter to an array, so that it can hold up to 4
   i2c_adapter structures.
 2* Add a mutex to prevent concurrent access to the register set. It
   should be initialized in piix4_setup_sb800(), taken at the very
   beginning of piix4_access() and released at the very end of this
   function.
 3* Add support for ports 1, 2 and 3 of the SB800.

I tried to apply your suggestion... but... I don't really have the
knowledges to do what you wrote...

I need your help :(

Regards

Eddi
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-06 Thread Jean Delvare
Hi Eddi,

Please don't top-post, and only include as much context as necessary in
your replies.

On Mon, 5 Dec 2011 23:57:10 +0100, Eddi De Pieri wrote:
 I tried in rewriting the driver... but I can't understand the right way...
 
 since sb800 is a southbus, the mux driver must be defined as
 i2c_device, platform_device, or pci_device?

Your question doesn't make sense. A driver can't be defined as a
device. But anyway I think I understand where your confusion comes
from. The SMBus multiplexing as it exists on the SB800 is very
different from what was implemented for the Tyan S4882 and S4985 boards.

In fact, now that I have a SB800 datasheet, I better understand what
you were doing and how it should be implemented. I don't even think you
need the multiplexer framework for the SB800. My understanding is that
it has 4 almost independent SMBus ports. The only thing that is shared
between them is the register set. Contrary to the S4882 and S4985 board
multiplexing, it is totally board-independent. So support should go to the
i2c-piix4 driver directly.

BTW please avoid comments in Italian in your code. Not everyone reads
Italian. Use English.

 I tried using i2c_device structure, but I can't make sb800 to match
 the id_Table..
 I tried usign pci_device structure, but the driver overwrite the pci
 space so kernel hangs...

You don't need a multiplexer device at all. Please just have i2c-piix4
driver register 4 i2c_adapter devices for the SB800. This would be a
3-step process:

1* Turn piix4_adapter to an array, so that it can hold up to 4
   i2c_adapter structures.
2* Add a mutex to prevent concurrent access to the register set. It
   should be initialized in piix4_setup_sb800(), taken at the very
   beginning of piix4_access() and released at the very end of this
   function.
3* Add support for ports 1, 2 and 3 of the SB800.

This would ideally be 3 incremental patches to make testing and review
easy. I can help with parts 1 and 2 if you want, as this can be tested
without a SB800. But it should be fairly easy overall.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-05 Thread Eddi De Pieri
Hello,

I tried in rewriting the driver... but I can't understand the right way...

since sb800 is a southbus, the mux driver must be defined as
i2c_device, platform_device, or pci_device?

I tried using i2c_device structure, but I can't make sb800 to match
the id_Table..
I tried usign pci_device structure, but the driver overwrite the pci
space so kernel hangs...

Regards, Eddi.

On Sat, Dec 3, 2011 at 6:08 PM, Jean Delvare kh...@linux-fr.org wrote:
 Hi Eddi,

 On Sat, 3 Dec 2011 17:42:16 +0100, Eddi De Pieri wrote:
 Actually I don't have a development system with latest git. I build my
 patch on my debian with 2.6.32 kernel..

 The patch is based on i2c-amd756-s4882.c and adapted to work with sb8xx...

 i2c-amd756-s4882.c is still present and don't use i2c-mux infrastructure.

 That's because i2c-amd756-s4882.c was written before the i2c-mux
 infrastructure was available. Ideally SMBus multiplexing support on the
 Tyan S4882 would be converted to i2c-mux (i.e. i2c-amd756-s4882.c would
 be deleted and the multiplexer would be instantiated in i2c-amd756.c
 itself, based on DMI data.) This shouldn't be particularly difficult,
 the real difficulty is to find someone with one of these boards to test
 the changes.

 However if you are interested in porting my work to latest git, you
 will be welcome!

 That's not how it works, sorry. Submissions must be based on a recent
 kernel in order to be accepted upstream. If you want SMBus multiplexing
 support on your system, it will have to be based on i2c-mux, because
 that's how things work now. Otherwise I will not accept your code.

 --
 Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-03 Thread Eddi De Pieri
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 e...@depieri.net

Regards,

Eddi

follows patch

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.0 +0100
+++ 2.6.32/i2c-piix4.c  2011-11-16 15:21:17.0 +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 

Re: [lm-sensors] [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-03 Thread Guenter Roeck
On Sat, Dec 03, 2011 at 10:31:30AM -0500, Eddi De Pieri wrote:
 This patch add support to multiplexed smbus for proliant microserver
 N36L and may be applicable to other configuration based on sb8xx
 southbus.
 

Did you read Documentation/SubmittingPatches ?

The patch doesn't follow the canonical patch format, I can see that lines are 
split,
the patch isn't based on the linux root directory but on some other directory 
which
I guess you expect the reader to figure out, the patch description includes lots
of information which is irrelevant for the changelog, and it is based on 2.6.32
instead of the current release and thus pretty much guaranteed not to apply
to the current kernel version. All that w/o even looking into the code.

The patch implements an I2C multiplexer but doesn't use the I2C multiplexer
infrastructure. I am not one of the I2C maintainers, but that alone would cause 
me
to reject this patch (on top of all the other reasons above).

Guenter

 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 e...@depieri.net
 
 Regards,
 
 Eddi
 
 follows patch
 
 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.0 +0100
 +++ 2.6.32/i2c-piix4.c  

Re: [lm-sensors] [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-03 Thread Eddi De Pieri
Actually I don't have a development system with latest git. I build my
patch on my debian with 2.6.32 kernel..

The patch is based on i2c-amd756-s4882.c and adapted to work with sb8xx...

i2c-amd756-s4882.c is still present and don't use i2c-mux infrastructure.

However if you are interested in porting my work to latest git, you
will be welcome!

Regards Eddi


On Sat, Dec 3, 2011 at 5:27 PM, Guenter Roeck
guenter.ro...@ericsson.com wrote:
 On Sat, Dec 03, 2011 at 10:31:30AM -0500, Eddi De Pieri wrote:
 This patch add support to multiplexed smbus for proliant microserver
 N36L and may be applicable to other configuration based on sb8xx
 southbus.


 Did you read Documentation/SubmittingPatches ?

 The patch doesn't follow the canonical patch format, I can see that lines are 
 split,
 the patch isn't based on the linux root directory but on some other directory 
 which
 I guess you expect the reader to figure out, the patch description includes 
 lots
 of information which is irrelevant for the changelog, and it is based on 
 2.6.32
 instead of the current release and thus pretty much guaranteed not to apply
 to the current kernel version. All that w/o even looking into the code.

 The patch implements an I2C multiplexer but doesn't use the I2C multiplexer
 infrastructure. I am not one of the I2C maintainers, but that alone would 
 cause me
 to reject this patch (on top of all the other reasons above).

 Guenter

 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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 

Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-12-03 Thread Jean Delvare
Hi Eddi,

On Sat, 3 Dec 2011 17:42:16 +0100, Eddi De Pieri wrote:
 Actually I don't have a development system with latest git. I build my
 patch on my debian with 2.6.32 kernel..
 
 The patch is based on i2c-amd756-s4882.c and adapted to work with sb8xx...
 
 i2c-amd756-s4882.c is still present and don't use i2c-mux infrastructure.

That's because i2c-amd756-s4882.c was written before the i2c-mux
infrastructure was available. Ideally SMBus multiplexing support on the
Tyan S4882 would be converted to i2c-mux (i.e. i2c-amd756-s4882.c would
be deleted and the multiplexer would be instantiated in i2c-amd756.c
itself, based on DMI data.) This shouldn't be particularly difficult,
the real difficulty is to find someone with one of these boards to test
the changes.

 However if you are interested in porting my work to latest git, you
 will be welcome!

That's not how it works, sorry. Submissions must be based on a recent
kernel in order to be accepted upstream. If you want SMBus multiplexing
support on your system, it will have to be based on i2c-mux, because
that's how things work now. Otherwise I will not accept your code.

-- 
Jean Delvare
--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-11-27 Thread Ben Dooks

On Fri, Nov 25, 2011 at 11:07:21PM +0100, Eddi De Pieri wrote:
 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#

patch should go inline so it can be reviewed, thanks.

-- 
Ben Dooks, b...@fluff.org, http://www.fluff.org/ben/

Large Hadron Colada: A large Pina Colada that makes the universe disappear.

--
To unsubscribe from this list: send the line unsubscribe linux-i2c in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] i2c multiplexer driver for Proliant microserver N36L

2011-11-25 Thread Eddi De Pieri
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 e...@depieri.net

Regards,

Eddi


proliant-microserver-n36l.diff
Description: Binary data