Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1563)

Unified Diff: drivers/tpm/slb9635_i2c/compatibility.h

Issue 6683023: Add Infineon v05 TPM driver (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/u-boot-next.git@chromeos-v2010.09
Patch Set: Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: drivers/tpm/slb9635_i2c/compatibility.h
diff --git a/drivers/tpm/slb9635_i2c/compatibility.h b/drivers/tpm/slb9635_i2c/compatibility.h
new file mode 100644
index 0000000000000000000000000000000000000000..ae2cebbda2442fc9c714a49a9e884c13fa44d7b5
--- /dev/null
+++ b/drivers/tpm/slb9635_i2c/compatibility.h
@@ -0,0 +1,112 @@
+/*******************************************************************************
+**
+** FILENAME: $Id$
+** COPYRIGHT: Infineon Technologies
+** DESCRIPTION: I2C TPM - Compatibility layer to port linux driver to U-Boot
+** CREATION DATE: 2010/11/10
+** LAST CHANGE: $Date: 2010-10-20 12:04:48 +0200 (Wed, 20 Oct 2010) $
+** $Author$
+** VERSION: $Revision: 59 $
+**
+*******************************************************************************/
+
+#ifndef _COMPATIBILITY_H_
+#define _COMPATIBILITY_H_
+
+/* all includes from U-Boot */
+#include <linux/types.h>
+#include <asm-generic/errno.h>
+#include <compiler.h>
+#include <common.h>
+
+/* extended error numbers from linux (see errno.h) */
+#define ECANCELED 125 /* Operation Canceled */
+
+/* simple version, original from drivers/base/base.h */
+struct device_private {
+ void *driver_data;
+};
+
+/* simple version, original from include/linux/device.h */
+struct device {
+ struct device *parent;
+ struct device_private *p;
+ void (*release) (struct device *dev);
+};
+
+/*
+ * Timing concept in u-boot driver
+ * - jiffies is a global variable similar to linux
+ * - instead of sleeping msleep causes delay
+ * - jiffies is incremented inside msleep
+ * - conversion macros are available (not all conditions work)
+ * - tpm driver remains unchanged
+ *
+ * Conversion: 1 jiffie = 1/HZ seconds
+ * 1 second = HZ jiffies
+ *
+ * NOTE: linux kernel configuration for ARM sets HZ to 128,
+ * timeconst.h then contains automatically generated values for
+ * arithmetics.
+ */
+/* global timing value */
+extern unsigned long jiffies;
+
+/* conversion functions */
+extern void msleep(unsigned int t);
+extern void msleep2(unsigned int t);
+extern unsigned long usecs_to_jiffies(const unsigned int u);
+extern unsigned long msecs_to_jiffies(const unsigned int u);
+
+#define HZ 1000
+
+/* helper macros */
+#define typecheck(type, x) \
+({ type __dummy; \
+ typeof(x) __dummy2; \
+ (void)(&__dummy == &__dummy2); \
Che-Liang Chiou 2011/03/14 08:49:54 Is it void or void*?
rongchang 2011/03/23 11:44:57 This file is provided by Infineon. Hence will be k
+ 1; \
Che-Liang Chiou 2011/03/14 08:49:54 Does this mean typecheck() alway be evaluated to 1
rongchang 2011/03/23 11:44:57 Same as above.
+})
+
+/* time relation ships */
+#define time_after(a, b) \
+ (typecheck(unsigned long, a) && \
+ typecheck(unsigned long, b) && \
+ ((long)(b) - (long)(a) < 0))
Che-Liang Chiou 2011/03/14 08:49:54 Why not ((unsigned long)(b) < (unsigned long)(c))
rongchang 2011/03/23 11:44:57 Same as above.
+#define time_before(a, b) time_after(b, a)
+
+/* XXX Currently, an open issue with the cortex-a8 data abort trap
+ * prevents us from using the be32_to_cpu macros. Non-aligned data
+ * accesses hang-up program. Casting from 8- to 32-bit pointer is not
+ * working.
+ */
+static inline u32 switch_endian32(const u8 *buf)
+{
+ return (buf[0] << 24) | (buf[1] << 16) | (buf[2] << 8) | (buf[3]);
+}
+
+#if defined(DEBUG)
+# define dev_dbg(dev, format, arg...) printf(format, ##arg)
+#else
+# define dev_dbg(dev, format, arg...) while (0);
+#endif
+#define dev_err(dev, format, arg...) printf(format, ##arg)
+#define dev_info(dev, format, arg...) printf(format, ##arg)
+
+#if defined(DEBUG)
+# define dbg_printf(fmt, arg...) printf(fmt, ##arg)
+#else
+# define dbg_printf(fmt, arg...) while (0);
+#endif
+
+/* dummy for export */
+#define EXPORT_SYMBOL_GPL(x)
+
+#define module_init(x)
+#define module_exit(x)
+#define MODULE_AUTHOR(x)
+#define MODULE_DESCRIPTION(x)
+#define MODULE_VERSION(x)
+#define MODULE_LICENSE(x)
+
+#endif

Powered by Google App Engine
This is Rietveld 408576698