summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorGary King <gking@nvidia.com>2010-07-13 18:56:40 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:34:34 -0800
commitde786eb5be611f8ba2fc8c784fa5f98f89b5a428 (patch)
treebd0698c16a6523cb27221f4344979e1468bea7f3 /include/linux
parent9defc28533e93bd9b6298bdcba46c1c33e56d8d5 (diff)
i2c-tegra: add support for virtual busses with dynamic pinmuxing
this adds support for dynamically reprogramming the I2C controller's pin mux on transaction boundaries to enable one controller to be registered as multiple I2C bus adapters with the kernel. this allows platform designers an additional tool to resolve clock rate, I/O voltage and electrical loading restrictions between the platform's peripherals. the i2c-tegra platform data is extended to support this; platforms which use this feature should pass in the number of busses which should be created for each controller, the starting adapter number to use and the clock rate and pin mux for each virtual bus. Change-Id: I57a96deb7b7b793222ec3f8cc3a941917a023609 Signed-off-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/i2c-tegra.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/include/linux/i2c-tegra.h b/include/linux/i2c-tegra.h
index 9c85da49857a..6123502b8ddd 100644
--- a/include/linux/i2c-tegra.h
+++ b/include/linux/i2c-tegra.h
@@ -18,8 +18,17 @@
#ifndef _LINUX_I2C_TEGRA_H
#define _LINUX_I2C_TEGRA_H
+#include <mach/pinmux.h>
+
+#define TEGRA_I2C_MAX_BUS 3
+
struct tegra_i2c_platform_data {
- unsigned long bus_clk_rate;
+ int adapter_nr;
+ int bus_count;
+ const struct tegra_pingroup_config *bus_mux[TEGRA_I2C_MAX_BUS];
+ int bus_mux_len[TEGRA_I2C_MAX_BUS];
+ unsigned long bus_clk_rate[TEGRA_I2C_MAX_BUS];
+ bool is_dvc;
};
#endif /* _LINUX_I2C_TEGRA_H */