<feed xmlns='http://www.w3.org/2005/Atom'>
<title>talos-obmc-linux/drivers/i2c, branch dev-4.13</title>
<subtitle>Talos™ II Linux sources for OpenBMC</subtitle>
<id>https://git.raptorcs.com/git/talos-obmc-linux/atom?h=dev-4.13</id>
<link rel='self' href='https://git.raptorcs.com/git/talos-obmc-linux/atom?h=dev-4.13'/>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/'/>
<updated>2018-02-07T02:06:24+00:00</updated>
<entry>
<title>i2c: aspeed: Deassert reset in probe</title>
<updated>2018-02-07T02:06:24+00:00</updated>
<author>
<name>Joel Stanley</name>
<email>joel@jms.id.au</email>
</author>
<published>2017-11-01T00:23:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=a863dc0fee9b76b87608e6f774579ddc1e935a68'/>
<id>urn:sha1:a863dc0fee9b76b87608e6f774579ddc1e935a68</id>
<content type='text'>
In order to use i2c from a cold boot, the i2c peripheral must be taken
out of reset. We request a shared reset controller each time a bus
driver is loaded, as the reset is shared between the 14 i2c buses.

On remove the reset is asserted, which only touches the hardware once
the last i2c bus is removed.

The reset is required as the I2C buses will not work without releasing
the reset. Previously the driver only worked with out of tree hacks
that released this reset before the driver was loaded. Update the
device tree bindings to reflect this.

Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Signed-off-by: Wolfram Sang &lt;wsa@the-dreams.de&gt;
(cherry picked from commit edd20e95bca4a5434f264d8ab40d729761479825)
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: fsi: Add bus recovery for FSI algorithm</title>
<updated>2018-01-18T17:17:10+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=2177f015d00c8e55907a462fd295dc6d0589a2ed'/>
<id>urn:sha1:2177f015d00c8e55907a462fd295dc6d0589a2ed</id>
<content type='text'>
Bus recovery should reset the engine and force clock the bus 9 times
to recover most situations.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: fsi: Add I2C master locking to FSI algorithm</title>
<updated>2018-01-18T17:17:10+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=0c1ecd7aac7936028733716af561994a57d4d7ae'/>
<id>urn:sha1:0c1ecd7aac7936028733716af561994a57d4d7ae</id>
<content type='text'>
Since there are many ports per master, each with it's own adapter and
chardev, we need some locking to prevent transfers from changing the
master state while other transfers are in progress.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: fsi: Add transfer implementation for FSI algorithm</title>
<updated>2018-01-18T17:17:10+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=729aa2910c4e0d99ebda44729e2d88ef514375a4'/>
<id>urn:sha1:729aa2910c4e0d99ebda44729e2d88ef514375a4</id>
<content type='text'>
Execute I2C transfers from the FSI-attached I2C master. Use polling
instead of interrupts as we have no hardware IRQ over FSI.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: fsi: Add abort and hardware reset procedures</title>
<updated>2018-01-18T17:17:09+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=a1aca7355543ad33c01a474ee3b709ddd22c20c7'/>
<id>urn:sha1:a1aca7355543ad33c01a474ee3b709ddd22c20c7</id>
<content type='text'>
Add abort procedure for failed transfers. Add engine and bus reset
procedures to recover from as many faults as possible.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: fsi: Add port structure to FSI algorithm</title>
<updated>2018-01-18T17:17:09+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=af6c212c124bb884392f878307af99ed5c63f2ba'/>
<id>urn:sha1:af6c212c124bb884392f878307af99ed5c63f2ba</id>
<content type='text'>
Add and initialize I2C adapters for each port on the FSI-attached I2C
master. Ports for each master are defined in the devicetree.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>i2c: Add FSI-attached I2C master algorithm</title>
<updated>2018-01-18T17:17:08+00:00</updated>
<author>
<name>Edward A. James</name>
<email>eajames@us.ibm.com</email>
</author>
<published>2017-11-16T19:53:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=1b2aa5d37c17b21de97b3d307dd26597dad4c31a'/>
<id>urn:sha1:1b2aa5d37c17b21de97b3d307dd26597dad4c31a</id>
<content type='text'>
Add register definitions for FSI-attached I2C master and functions to
access those registers over FSI. Add an FSI driver so that our I2C bus
is probed up during an FSI scan.

OpenBMC-Staging-Count: 2
Signed-off-by: Edward A. James &lt;eajames@us.ibm.com&gt;
Signed-off-by: Joel Stanley &lt;joel@jms.id.au&gt;
</content>
</entry>
<entry>
<title>Merge tag 'v4.13.16' into dev-4.13</title>
<updated>2017-11-28T07:41:55+00:00</updated>
<author>
<name>Joel Stanley</name>
<email>joel@jms.id.au</email>
</author>
<published>2017-11-28T07:41:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=e62c292fd1d47c0bd0e2b82fcfacc8be0f1fb0f3'/>
<id>urn:sha1:e62c292fd1d47c0bd0e2b82fcfacc8be0f1fb0f3</id>
<content type='text'>
This is the 4.13.16 stable release
</content>
</entry>
<entry>
<title>i2c: piix4: Fix SMBus port selection for AMD Family 17h chips</title>
<updated>2017-10-27T08:39:13+00:00</updated>
<author>
<name>Guenter Roeck</name>
<email>linux@roeck-us.net</email>
</author>
<published>2017-07-15T23:51:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=73f8f48c57e37ac9758bfe8f1d605739f6d62757'/>
<id>urn:sha1:73f8f48c57e37ac9758bfe8f1d605739f6d62757</id>
<content type='text'>
commit 0fe16195f89173652cf111d7b384941b00c5aabd upstream.

AMD Family 17h uses the KERNCZ SMBus controller. While its documentation
is not publicly available, it is documented in the BIOS and Kernel
Developer’s Guide for AMD Family 15h Models 60h-6Fh Processors.

On this SMBus controller, the port select register is at PMx register
0x02, bit 4:3 (PMx00 register bit 20:19).

Without this patch, the 4 SMBus channels on AMD Family 17h chips are
mirrored and report the same chips on all channels.

Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Reviewed-by: Jean Delvare &lt;jdelvare@suse.de&gt;
Signed-off-by: Wolfram Sang &lt;wsa@the-dreams.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>i2c: ismt: Separate I2C block read from SMBus block read</title>
<updated>2017-10-27T08:39:13+00:00</updated>
<author>
<name>Pontus Andersson</name>
<email>epontan@gmail.com</email>
</author>
<published>2017-10-02T12:45:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.raptorcs.com/git/talos-obmc-linux/commit/?id=adb0c133a4479ad477c60b630f16803ded751c64'/>
<id>urn:sha1:adb0c133a4479ad477c60b630f16803ded751c64</id>
<content type='text'>
commit c6ebcedbab7ca78984959386012a17b21183e1a3 upstream.

Commit b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for
block reads") broke I2C block reads. It aimed to fix normal SMBus block
read, but changed the correct behavior of I2C block read in the process.

According to Documentation/i2c/smbus-protocol, one vital difference
between normal SMBus block read and I2C block read is that there is no
byte count prefixed in the data sent on the wire:

 SMBus Block Read:  i2c_smbus_read_block_data()
 S Addr Wr [A] Comm [A]
            S Addr Rd [A] [Count] A [Data] A [Data] A ... A [Data] NA P

 I2C Block Read:  i2c_smbus_read_i2c_block_data()
 S Addr Wr [A] Comm [A]
            S Addr Rd [A] [Data] A [Data] A ... A [Data] NA P

Therefore the two transaction types need to be processed differently in
the driver by copying of the dma_buffer as done previously for the
I2C_SMBUS_I2C_BLOCK_DATA case.

Fixes: b6c159a9cb69 ("i2c: ismt: Don't duplicate the receive length for block reads")
Signed-off-by: Pontus Andersson &lt;epontan@gmail.com&gt;
Tested-by: Stephen Douthit &lt;stephend@adiengineering.com&gt;
Signed-off-by: Wolfram Sang &lt;wsa@the-dreams.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
