Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2370163ybb; Sun, 5 Apr 2020 05:56:33 -0700 (PDT) X-Google-Smtp-Source: APiQypJjKbA9wgUqVOSSRbyiFV39VOlRjhSwdm/P40xS05hnZ+MkTlicO9S/lT4TnwMuuOlAmBoD X-Received: by 2002:a05:6830:160a:: with SMTP id g10mr12977962otr.329.1586091393239; Sun, 05 Apr 2020 05:56:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586091393; cv=none; d=google.com; s=arc-20160816; b=kq2YHSAnSRgDmJdSfUZ+5vaLFP5JQbfK/gVMJSnXxLktIYuK0AbhmcUzOXRHTrpcZU VgmwFecfC79npzXyM+TIZKKQzw/mJElLAVUFPYdkla1oD0FDYbDdGGhtzs/lb8q+0Oes BctV7qZpZJKRltRMVocBcaAuWJhFLQ2IB9C8r9Y8d9ZeBSnoL0607FnOz0KjQoKlqjWV h180NIOLmWQ4flG2Rty/vILKO0ji5AvDzkRMb6wK0/462LbYn4/9UCfK5hsQTZeBQRHa ZvuJFb+bmNIosu160BbCVMQ7zvisrKyj8CO6DtDT4/B04FsDeUh1NvFS5iFbvjuPFB+w vQ9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=YDsL4xVkgw3Ix9zq/DjtYuXlzQCXCe212g6k8m2Cdsg=; b=MG8mVuMcakcs22XJ/mcptdi1w+DVuCbYkkHWM0hS6SUqWeadf/wlvRlrb2PIjQa1qK tSssjN2t/eL+SynRgWgwneJR6Y+jjcPqAY8SJKCtvCJkvl9AtexznfBPA339VFyWrgha 1Y1h0vRVV+KwdwgBuQSOMiejzBly3b797afFvS2/hL8/O58lnuMNhlr2UemwltSWCPZ9 rNe87IYFVm+z7MqukjdvFOkGCw5Jm289dTztC9UyN+9DAmWKKBVoPwMm018K6A+UNnsz 8C3Q/OhVjpi3TsmBj2LD9uS7eqqSgTt/zSwnSCfx4+B5KMXMpgUGbm2oeUdQutaVp5yd yMlA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l15si6415164otl.297.2020.04.05.05.56.20; Sun, 05 Apr 2020 05:56:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726632AbgDEMzE (ORCPT + 99 others); Sun, 5 Apr 2020 08:55:04 -0400 Received: from 212.199.177.27.static.012.net.il ([212.199.177.27]:40202 "EHLO herzl.nuvoton.co.il" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726556AbgDEMzE (ORCPT ); Sun, 5 Apr 2020 08:55:04 -0400 Received: from taln60.nuvoton.co.il (ntil-fw [212.199.177.25]) by herzl.nuvoton.co.il (8.13.8/8.13.8) with ESMTP id 035CsQd0005467; Sun, 5 Apr 2020 15:54:26 +0300 Received: by taln60.nuvoton.co.il (Postfix, from userid 10140) id 22D97639AF; Sun, 5 Apr 2020 15:54:26 +0300 (IDT) From: amirmizi6@gmail.com To: Eyal.Cohen@nuvoton.com, jarkko.sakkinen@linux.intel.com, oshrialkoby85@gmail.com, alexander.steffen@infineon.com, robh+dt@kernel.org, "benoit.houyere@st.com--to=mark.rutland"@arm.com, peterhuewe@gmx.de, christophe-h.richard@st.com, jgg@ziepe.ca, arnd@arndb.de, gregkh@linuxfoundation.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-integrity@vger.kernel.org, oshri.alkoby@nuvoton.com, tmaimon77@gmail.com, gcwilson@us.ibm.com, kgoldman@us.ibm.com, Dan.Morav@nuvoton.com, oren.tanami@nuvoton.com, shmulik.hager@nuvoton.com, amir.mizinski@nuvoton.com, Amir Mizinski Subject: Add tpm i2c ptp driver Date: Sun, 5 Apr 2020 15:53:45 +0300 Message-Id: <20200405125352.183693-1-amirmizi6@gmail.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Amir Mizinski This patch set adds support for TPM devices that implement the I2C. Interface defined by TCG PTP specification: https://trustedcomputinggroup.org/wp-content/uploads/TCG_PC_Client_Platform_TPM_Profile_PTP_2.0_r1.03_v22.pdf The driver was tested on Raspberry-Pie 3, using Nuvoton NPCT75X TPM. Interrupts are not implemented yet, preparing it for the next patch. This patch is based on initial work by oshri Alkoby, Alexander Steffen and Christophe Ricard Changes since version 1: -"char:tpm:Add check_data handle to tpm_tis_phy_ops in order to check data integrity" - Fixed and extended commit description. - Fixed an issue regarding handling max retries. -"dt-bindings: tpm: Add YAML schema for TPM TIS I2C options": -Converted "tpm_tis_i2c.txt" to "tpm-tis-i2c.yaml". - Renamed "tpm_tis-i2c" to "tpm-tis-i2c". - Removed interrupts properties. -"char: tpm: add tpm_tis_i2c driver" - Replaced "tpm_tis-i2c" with "tpm-tis-i2c" in "tpm_tis_i2c.c". Addressed comments from: - Jarkko Sakkinen: https://patchwork.kernel.org/patch/11236257/ - Rob Herring: https://patchwork.kernel.org/patch/11236253/ Changes since version 2: - Added 2 new commits with improvements suggested by Benoit Houyere. -"Fix expected bit handling and send all bytes in one shot without last byte in exception" -"Handle an exeption for TPM Firmware Update mode." - Updated patch to latest v5.5 -"dt-bindings: tpm: Add YAML schema for TPM TIS I2C options" - Added "interrupts" and "crc-checksum" to properties. - Updated binding description and commit info. -"char: tpm: add tpm_tis_i2c driver" (suggested by Benoit Houyere) - Added repeat I2C frame after NACK. - Checksum I2C feature activation in DTS file configuration. Addressed comments from: - Rob Herring: https://lore.kernel.org/patchwork/patch/1161287/ Changes since version 3: - Updated patch to latest v5.6 - Updated commits headlines and development credit format by Jarkko Sakkinen suggestion -"tpm: tpm_tis: Make implementation of read16 read32 write32 optional" - Updated commit description. -"dt-bindings: tpm: Add YAML schema for TPM TIS I2C options" - Fixed 'make dt_binding_check' errors on YAML file. - Removed interrupts from required and examples since there is no use for them in current patch. Addressed comments from: - Jarkko Sakkinen: https://lore.kernel.org/patchwork/patch/1192101/ - Rob Herring: https://lore.kernel.org/patchwork/patch/1192099/ Changes since version 4: -"tpm: tpm_tis: Make implementation of read16 read32 write32 optional" -Reviewed-by: -"tpm: tpm_tis: Add check_data handle to tpm_tis_phy_ops in order to check data integrity" -fixed credit typos. -"tpm: tpm_tis: rewrite "tpm_tis_req_canceled()"" -added fixes tag and removed changes for STM -"tpm: tpm_tis: Fix expected bit handling and send all bytes in one shot without last byte in exception" -fixed typos, edited description to be more clear, and added a "Suggested-by" tag. -"tpm: Handle an exception for TPM Firmware Update mode." -added a "Suggested-by" tag. -"dt-bindings: tpm: Add YAML schema for TPM TIS I2C options" -fixed 'make dt_binding_check' errors -"tpm: tpm_tis: add tpm_tis_i2c driver" -added tested-by tag by Eddie James -fixed indent in Kconfig file -fixed 'MODULE_DESCRIPTION' Addressed comments from: - Jarkko Sakkinen: https://patchwork.kernel.org/patch/11467645/ https://patchwork.kernel.org/patch/11467655/ https://patchwork.kernel.org/patch/11467643/ https://patchwork.kernel.org/patch/11467659/ https://patchwork.kernel.org/patch/11467651/ - Rob Herring: https://patchwork.kernel.org/patch/11467653/ - Randy Dunlap: https://patchwork.kernel.org/patch/11467651/ - Eddie James: https://lore.kernel.org/patchwork/patch/1192104/ Amir Mizinski (7): tpm: tpm_tis: Make implementation of read16 read32 write32 optional tpm: tpm_tis: Add check_data handle to tpm_tis_phy_ops in order to check data integrity tpm: tpm_tis: rewrite "tpm_tis_req_canceled()" tpm: tpm_tis: Fix expected bit handling and send all bytes in one shot without last byte in exception tpm: Handle an exception for TPM Firmware Update mode. dt-bindings: tpm: Add YAML schema for TPM TIS I2C options tpm: tpm_tis: add tpm_tis_i2c driver .../bindings/security/tpm/tpm-tis-i2c.yaml | 47 ++++ drivers/char/tpm/Kconfig | 12 + drivers/char/tpm/Makefile | 1 + drivers/char/tpm/tpm2-cmd.c | 4 + drivers/char/tpm/tpm_tis_core.c | 175 ++++++------ drivers/char/tpm/tpm_tis_core.h | 41 ++- drivers/char/tpm/tpm_tis_i2c.c | 292 +++++++++++++++++++++ drivers/char/tpm/tpm_tis_spi_main.c | 41 --- include/linux/tpm.h | 1 + 9 files changed, 486 insertions(+), 128 deletions(-) create mode 100644 Documentation/devicetree/bindings/security/tpm/tpm-tis-i2c.yaml create mode 100644 drivers/char/tpm/tpm_tis_i2c.c -- 2.7.4