[PATCH v2 3/3] arm: dt: Add device tree support for i2c instance 0 and 1 on exynos4 dt machine
Grant Likely
grant.likely at secretlab.ca
Sun Jul 31 13:55:36 EST 2011
On Fri, Jul 22, 2011 at 03:48:38PM +0530, Thomas Abraham wrote:
> Add device node for i2c instance 0 and 1 and list all its connected slave
> devices.
>
> Signed-off-by: Thomas Abraham <thomas.abraham at linaro.org>
> ---
> arch/arm/boot/dts/exynos4-smdkv310.dts | 45 +++++++++++++++++++++++++++++++
> arch/arm/mach-exynos4/Kconfig | 2 +
> arch/arm/mach-exynos4/mach-exynos4-dt.c | 23 ++++++++++++++++
> 3 files changed, 70 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/dts/exynos4-smdkv310.dts b/arch/arm/boot/dts/exynos4-smdkv310.dts
> index d65c18c..6fd2032 100644
> --- a/arch/arm/boot/dts/exynos4-smdkv310.dts
> +++ b/arch/arm/boot/dts/exynos4-smdkv310.dts
> @@ -41,6 +41,12 @@
> irq-start = <61>;
> };
>
> + gpd1: gpio-controller at 114000C0 {
> + compatible = "samsung,exynos4-gpio-gpd1","samsung,exynos4-gpio";
> + #gpio-cells = <2>;
> + gpio-controller;
> + };
> +
> watchdog at 10060000 {
> compatible = "samsung,s3c2410-wdt";
> reg = <0x10060000 0x400>;
> @@ -64,5 +70,44 @@
> samsung,sdhci-cd-type = <0>;
> samsung,sdhci-clkdiv-external;
> };
> +
> + i2c at 13860000 {
> + compatible = "samsung,s3c2440-i2c";
> + reg = <0x13860000 0x100>;
> + interrupts = <344>;
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-max-bus-freq = <20000>;
> + gpios = <&gpd1 0 0 /* SDA */
> + &gpd1 1 0 /* SCL */>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + eeprom at 50 {
> + compatible = "samsung,24ad0xd1";
> + reg = <0x50>;
> + };
> +
> + eeprom at 52 {
> + compatible = "samsung,24ad0xd1";
> + reg = <0x51>;
> + };
> + };
> +
> + i2c at 13870000 {
> + compatible = "samsung,s3c2440-i2c";
> + reg = <0x13870000 0x100>;
> + interrupts = <345>;
> + samsung,i2c-sda-delay = <100>;
> + samsung,i2c-max-bus-freq = <100000>;
> + gpios = <&gpd1 2 0 /* SDA */
> + &gpd1 3 0 /* SCL */>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + wm8994 at 1a {
> + compatible = "wlf,wm8994";
> + reg = <0x1a>;
> + };
> + };
> };
> };
> diff --git a/arch/arm/mach-exynos4/Kconfig b/arch/arm/mach-exynos4/Kconfig
> index bb97b7e..06b43ca 100644
> --- a/arch/arm/mach-exynos4/Kconfig
> +++ b/arch/arm/mach-exynos4/Kconfig
> @@ -193,6 +193,8 @@ config MACH_EXYNOS4_DT
> select S3C_DEV_HSMMC
> select S3C_DEV_HSMMC2
> select EXYNOS4_SETUP_SDHCI
> + select EXYNOS4_SETUP_I2C0
> + select EXYNOS4_SETUP_I2C1
Hmmm, there should be a better way do do this; but I don't have any
objections.
Acked-by: Grant Likely <grant.likely at secretlab.ca>
> help
> Machine support for Samsung Exynos4 machine with device tree enabled.
>
> diff --git a/arch/arm/mach-exynos4/mach-exynos4-dt.c b/arch/arm/mach-exynos4/mach-exynos4-dt.c
> index 120665a..8b0cf8f 100644
> --- a/arch/arm/mach-exynos4/mach-exynos4-dt.c
> +++ b/arch/arm/mach-exynos4/mach-exynos4-dt.c
> @@ -23,7 +23,10 @@
> #include <plat/regs-serial.h>
> #include <plat/exynos4.h>
> #include <plat/cpu.h>
> +#include <plat/devs.h>
> #include <plat/sdhci.h>
> +#include <plat/iic.h>
> +#include <plat/iic-core.h>
>
> #include <mach/map.h>
>
> @@ -63,6 +66,22 @@ static struct s3c2410_uartcfg smdkv310_uartcfgs[] __initdata = {
> };
>
> /*
> + * The i2c driver does not handle the pinmux settings. Instead, the
> + * platform specific callback function is passed through the platform
> + * data that can handle the pinmux settings for the i2c module.
> + * Eventually, when the new pinmux api is merged, the i2c driver can
> + * be modified to handle the pinmux settings. This is temporary for
> + * now.
> + */
> +static struct s3c2410_platform_i2c exynos4_dt_i2c_data0 __initdata = {
> + .cfg_gpio = s3c_i2c0_cfg_gpio,
> +};
> +
> +static struct s3c2410_platform_i2c exynos4_dt_i2c_data1 __initdata = {
> + .cfg_gpio = s3c_i2c1_cfg_gpio,
> +};
> +
> +/*
> * The following lookup table is used to override device names when devices
> * are registered from device tree. Optionally, the platform data can also
> * to supplied. The sdhci driver requires the device name to be overridden
> @@ -75,6 +94,10 @@ static const struct of_dev_auxdata exynos4_auxdata_lookup[] __initconst = {
> "s3c-sdhci.2", &s3c_hsmmc2_def_platdata),
> OF_DEV_AUXDATA("samsung,s3c6410-sdhci", EXYNOS4_PA_HSMMC(0),
> "s3c-sdhci.0", &s3c_hsmmc0_def_platdata),
> + OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(0),
> + "s3c2440-i2c.0", &exynos4_dt_i2c_data0),
> + OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS4_PA_IIC(1),
> + "s3c2440-i2c.1", &exynos4_dt_i2c_data1),
> {},
> };
>
> --
> 1.6.6.rc2
>
More information about the devicetree-discuss
mailing list