tpm: Add support for the Nuvoton NPCT501 I2C TPM
authorJason Gunthorpe <jgunthorpe@obsidianresearch.com>
Sun, 6 Oct 2013 18:43:13 +0000 (12:43 -0600)
committerPeter Huewe <peterhuewe@gmx.de>
Tue, 22 Oct 2013 17:43:04 +0000 (19:43 +0200)
commit4c336e4b1556f4b722ba597bc6e3df786968a600
tree06c87151784a45fa4ae7beb7c0121fd045b469a1
parent187eea0c353abd4ffa3a9cc86a660af9605fcb10
tpm: Add support for the Nuvoton NPCT501 I2C TPM

This chip is/was also branded as a Winbond WPCT301.

Originally written by Dan Morav <dmorav@nuvoton.com> and posted to LKML:
https://lkml.org/lkml/2011/9/7/206

The original posting was not merged, I have taken it as a
starting point, forward ported, tested and revised the driver:
 - Rework interrupt handling to work properly with level triggered
   interrupts. The old version just locked up.
 - Synchronize various items with Peter Huewe's Infineon driver:
    * Add durations/timeouts sysfs calls
    * Remove I2C device auto-detection
    * Don't fiddle with chip->release
    * Call tpm_dev_vendor_release in the probe error path
    * Use MODULE_DEVICE_TABLE for the I2C ids
    * Provide OF compatible strings for DT support
    * Use SIMPLE_DEV_PM_OPS
    * Use module_i2c_driver
 - checkpatch cleanups
 - Testing on ARM Kirkwood with GPIO interrupts, with this device tree:
tpm@57 {
                compatible = "nuvoton,npct501";
                reg = <0x57>;
                interrupt-parent = <&gpio1>;
                interrupts = <6 IRQ_TYPE_LEVEL_LOW>;
        };

Signed-off-by: Dan Morav <dmorav@nuvoton.com>
[jgg: revised and tested]
Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
[phuewe: minor whitespace changes, fixed module name in kconfig]

Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
Documentation/devicetree/bindings/i2c/trivial-devices.txt
drivers/char/tpm/Kconfig
drivers/char/tpm/Makefile
drivers/char/tpm/tpm_i2c_nuvoton.c [new file with mode: 0644]