summaryrefslogtreecommitdiff
path: root/include/i2c_arbitration.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/i2c_arbitration.h')
-rw-r--r--include/i2c_arbitration.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/include/i2c_arbitration.h b/include/i2c_arbitration.h
new file mode 100644
index 0000000000..cf4d39d247
--- /dev/null
+++ b/include/i2c_arbitration.h
@@ -0,0 +1,44 @@
+/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* I2C arbitration for Chrome EC */
+
+#ifndef __CROS_EC_I2C_ARBITRATION_H
+#define __CROS_EC_I2C_ARBITRATION_H
+
+#include "common.h"
+
+#ifdef CONFIG_I2C_ARBITRATION
+
+/**
+ * Claim an I2C port for use in master mode.
+ *
+ * If this function succeeds, you must later call i2c_release() to release the
+ * claim.
+ *
+ * This function must not be called to claim an already-claimed port.
+ *
+ * @param port Port to claim (0 for first, 1 for second, etc.)
+ * @return 0 if claimed successfully, -1 if it is in use
+ */
+int i2c_claim(int port);
+
+/**
+ * Release an I2C port (after previously being claimed)
+ *
+ * This function must not be called to release an already-released port.
+ *
+ * @param port Port to claim (0 for first, 1 for second, etc.)
+ */
+void i2c_release(int port);
+
+#else
+
+static inline int i2c_claim(int port) { return EC_SUCCESS; }
+static inline void i2c_release(int port) {}
+
+#endif
+
+#endif /* __CROS_EC_I2C_ARBITRATION_H */