• Jason Gunthorpe's avatar
    tpm: Add support for the Nuvoton NPCT501 I2C TPM · 4c336e4b
    Jason Gunthorpe authored
    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: default avatarDan Morav <dmorav@nuvoton.com>
    [jgg: revised and tested]
    Signed-off-by: default avatarJason Gunthorpe <jgunthorpe@obsidianresearch.com>
    [phuewe: minor whitespace changes, fixed module name in kconfig]
    Signed-off-by: default avatarPeter Huewe <peterhuewe@gmx.de>
    4c336e4b
tpm_i2c_nuvoton.c 19.6 KB