[PATCH RFC] ARM: EXYNOS5: Setup legacy i2c controller interrupts on SMDK5250
From: Thomas Abraham <hidden>
Date: 2012-11-06 08:15:33
On 6 November 2012 11:48, Abhilash Kesavan [off-list ref] wrote:
On Exynos5 we have a new high-speed i2c controller. The interrupt sources for the legacy and new controller are muxed and are controlled via the SYSCON I2C_CFG register. At reset the interrupt source is configured for the high-speed controller, to continue using the old i2c controller we need to modify the I2C_CFG register.
If the high-speed i2c controllers are not used, can this configuration be moved into the bootloader? The other option could be, in the exynos5250_dt_machine_init() function, first check if the platform is compatible with "samsung,exynos5250" and if so search for a high-speed i2c controller compatible node. If a high-speed controller node is found and if that node is not disabled, then do not change the reset value of I2C_CFG register. Thanks, Thomas.
quoted hunk ↗ jump to hunk
Signed-off-by: Abhilash Kesavan <redacted> --- This is a hack, I am not quite clear on how to handle this via DT. Suggestions welcome. arch/arm/mach-exynos/mach-exynos5-dt.c | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-)diff --git a/arch/arm/mach-exynos/mach-exynos5-dt.c b/arch/arm/mach-exynos/mach-exynos5-dt.c index ed37273..badffd4 100644 --- a/arch/arm/mach-exynos/mach-exynos5-dt.c +++ b/arch/arm/mach-exynos/mach-exynos5-dt.c@@ -13,10 +13,12 @@ #include <linux/serial_core.h> #include <linux/memblock.h> #include <linux/of_fdt.h> +#include <linux/io.h> #include <asm/mach/arch.h> #include <asm/hardware/gic.h> #include <mach/map.h> +#include <mach/regs-pmu.h> #include <plat/cpu.h> #include <plat/regs-serial.h>@@ -89,6 +91,12 @@ static const struct of_dev_auxdata exynos5250_auxdata_lookup[] __initconst = { {}, }; +static void exynos5_i2c_setup(void) +{ + /* Setup the low-speed i2c controller interrupts */ + writel(0x0, EXYNOS5_SYS_I2C_CFG); +} + static void __init exynos5250_dt_map_io(void) { exynos_init_io(NULL, 0);@@ -97,6 +105,8 @@ static void __init exynos5250_dt_map_io(void) static void __init exynos5250_dt_machine_init(void) { + exynos5_i2c_setup(); + of_platform_populate(NULL, of_default_bus_match_table, exynos5250_auxdata_lookup, NULL); } --1.6.6.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel