diff options
author | Gary King <gking@nvidia.com> | 2010-07-13 18:56:40 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:34:34 -0800 |
commit | de786eb5be611f8ba2fc8c784fa5f98f89b5a428 (patch) | |
tree | bd0698c16a6523cb27221f4344979e1468bea7f3 /include/linux | |
parent | 9defc28533e93bd9b6298bdcba46c1c33e56d8d5 (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.h | 11 |
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 */ |