On 04/01/14 01:43, Przemyslaw Marczak wrote: > Old s5p gpio coding method was not clean and was not working properly > for all parts and banks. New method is clean and easy to extend. > > Gpio coding mask: > 0x000000ff - pin number > 0x00ffff00 - bank offset > 0xff000000 - part number > > Signed-off-by: Przemyslaw Marczak <p.marc...@samsung.com> > > --- > Changes v2: > - none > > Changes v3: > - fix merge conflict in arch/arm/include/asm/arch-exynos/gpio.h > - add exynos5420 gpio coding > - update file: board/samsung/trats2/trats2.c > > arch/arm/include/asm/arch-exynos/gpio.h | 245 > +++++++++--------------------- > arch/arm/include/asm/arch-s5pc1xx/gpio.h | 47 ++++-- > board/samsung/trats2/trats2.c | 8 +- > drivers/gpio/s5p_gpio.c | 15 +- > include/configs/s5p_goni.h | 4 +- > include/configs/s5pc210_universal.h | 12 +- > include/configs/trats.h | 4 +- > 7 files changed, 132 insertions(+), 203 deletions(-) > > diff --git a/arch/arm/include/asm/arch-exynos/gpio.h > b/arch/arm/include/asm/arch-exynos/gpio.h > index 2a19852..64bd23b 100644 > --- a/arch/arm/include/asm/arch-exynos/gpio.h > +++ b/arch/arm/include/asm/arch-exynos/gpio.h > @@ -247,180 +247,81 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int > gpio, int mode); > > /* GPIO pins per bank */ > #define GPIO_PER_BANK 8 > - > -#define exynos4_gpio_part1_get_nr(bank, pin) \ > - ((((((unsigned int) &(((struct exynos4_gpio_part1 *) \ > - EXYNOS4_GPIO_PART1_BASE)->bank)) \ > - - EXYNOS4_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) > - > -#define EXYNOS4_GPIO_PART1_MAX ((sizeof(struct exynos4_gpio_part1) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos4_gpio_part2_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos4_gpio_part2 *) \ > - EXYNOS4_GPIO_PART2_BASE)->bank)) \ > - - EXYNOS4_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS4_GPIO_PART1_MAX) > - > -#define exynos4x12_gpio_part1_get_nr(bank, pin) \ > - ((((((unsigned int) &(((struct exynos4x12_gpio_part1 *) \ > - EXYNOS4X12_GPIO_PART1_BASE)->bank)) \ > - - EXYNOS4X12_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) > - > -#define EXYNOS4X12_GPIO_PART1_MAX ((sizeof(struct exynos4x12_gpio_part1) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos4x12_gpio_part2_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos4x12_gpio_part2 *) \ > - EXYNOS4X12_GPIO_PART2_BASE)->bank)) \ > - - EXYNOS4X12_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS4X12_GPIO_PART1_MAX) > - > -#define EXYNOS4X12_GPIO_PART2_MAX ((sizeof(struct exynos4x12_gpio_part2) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos4x12_gpio_part3_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos4x12_gpio_part3 *) \ > - EXYNOS4X12_GPIO_PART3_BASE)->bank)) \ > - - EXYNOS4X12_GPIO_PART3_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS4X12_GPIO_PART2_MAX) > - > -#define exynos5_gpio_part1_get_nr(bank, pin) \ > - ((((((unsigned int) &(((struct exynos5_gpio_part1 *) \ > - EXYNOS5_GPIO_PART1_BASE)->bank)) \ > - - EXYNOS5_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) > - > -#define EXYNOS5_GPIO_PART1_MAX ((sizeof(struct exynos5_gpio_part1) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos5_gpio_part2_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos5_gpio_part2 *) \ > - EXYNOS5_GPIO_PART2_BASE)->bank)) \ > - - EXYNOS5_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS5_GPIO_PART1_MAX) > - > -#define EXYNOS5_GPIO_PART2_MAX ((sizeof(struct exynos5_gpio_part2) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos5_gpio_part3_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos5_gpio_part3 *) \ > - EXYNOS5_GPIO_PART3_BASE)->bank)) \ > - - EXYNOS5_GPIO_PART3_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS5_GPIO_PART2_MAX) > - > - > -/* EXYNOS5420 */ > -#define exynos5420_gpio_part1_get_nr(bank, pin) \ > - ((((((unsigned int) &(((struct exynos5420_gpio_part1 *)\ > - EXYNOS5420_GPIO_PART1_BASE)->bank)) \ > - - EXYNOS5420_GPIO_PART1_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) > - > -#define EXYNOS5420_GPIO_PART1_MAX ((sizeof(struct exynos5420_gpio_part1) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos5420_gpio_part2_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos5420_gpio_part2 *)\ > - EXYNOS5420_GPIO_PART2_BASE)->bank)) \ > - - EXYNOS5420_GPIO_PART2_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS5420_GPIO_PART1_MAX) > - > -#define EXYNOS5420_GPIO_PART2_MAX ((sizeof(struct exynos5420_gpio_part2) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos5420_gpio_part3_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos5420_gpio_part3 *)\ > - EXYNOS5420_GPIO_PART3_BASE)->bank)) \ > - - EXYNOS5420_GPIO_PART3_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS5420_GPIO_PART2_MAX) > - > -#define EXYNOS5420_GPIO_PART3_MAX ((sizeof(struct exynos5420_gpio_part3) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define exynos5420_gpio_part4_get_nr(bank, pin) \ > - (((((((unsigned int) &(((struct exynos5420_gpio_part4 *)\ > - EXYNOS5420_GPIO_PART4_BASE)->bank)) \ > - - EXYNOS5420_GPIO_PART4_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) + EXYNOS5420_GPIO_PART3_MAX) > - > -#define EXYNOS5420_GPIO_PART4_MAX ((sizeof(struct exynos5420_gpio_part4) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -#define EXYNOS5420_GPIO_PART5_MAX ((sizeof(struct exynos5420_gpio_part5) \ > - / sizeof(struct s5p_gpio_bank)) * GPIO_PER_BANK) > - > -static inline unsigned int s5p_gpio_base(int nr) > +#define S5P_GPIO_PART_SHIFT (24) > +#define S5P_GPIO_PART_MASK (0xff) > +#define S5P_GPIO_BANK_SHIFT (8) > +#define S5P_GPIO_BANK_MASK (0xffff) > +#define S5P_GPIO_PIN_MASK (0xff) > + > +#define S5P_GPIO_SET_PART(x) \ > + ((x & S5P_GPIO_PART_MASK) << S5P_GPIO_PART_SHIFT)
x should be wrapped with brace. please fix it globally. > + > +#define S5P_GPIO_GET_PART(x) \ > + ((x >> S5P_GPIO_PART_SHIFT) & S5P_GPIO_PART_MASK) > + > +#define S5P_GPIO_SET_PIN(x) \ > + (x & S5P_GPIO_PIN_MASK) > + > +#define EXYNOS4_GPIO_SET_BANK(part, bank) \ > + ((((unsigned)&(((struct exynos4_gpio_part##part *) \ > + EXYNOS4_GPIO_PART##part##_BASE)->bank) \ > + - EXYNOS4_GPIO_PART##part##_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define EXYNOS4X12_GPIO_SET_BANK(part, bank) \ > + ((((unsigned)&(((struct exynos4x12_gpio_part##part *) \ > + EXYNOS4X12_GPIO_PART##part##_BASE)->bank) \ > + - EXYNOS4X12_GPIO_PART##part##_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define EXYNOS5_GPIO_SET_BANK(part, bank) \ > + ((((unsigned)&(((struct exynos5420_gpio_part##part *) \ > + EXYNOS5420_GPIO_PART##part##_BASE)->bank) \ > + - EXYNOS5_GPIO_PART##part##_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define EXYNOS5420_GPIO_SET_BANK(part, bank) \ > + ((((unsigned)&(((struct exynos5420_gpio_part##part *) \ > + EXYNOS5420_GPIO_PART##part##_BASE)->bank) \ > + - EXYNOS5420_GPIO_PART##part##_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define exynos4_gpio_get(part, bank, pin) \ > + (S5P_GPIO_SET_PART(part) | \ > + EXYNOS4_GPIO_SET_BANK(part, bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +#define exynos4x12_gpio_get(part, bank, pin) \ > + (S5P_GPIO_SET_PART(part) | \ > + EXYNOS4X12_GPIO_SET_BANK(part, bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +#define exynos5420_gpio_get(part, bank, pin) \ > + (S5P_GPIO_SET_PART(part) | \ > + EXYNOS5420_GPIO_SET_BANK(part, bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +#define exynos5_gpio_get(part, bank, pin) \ > + (S5P_GPIO_SET_PART(part) | \ > + EXYNOS5_GPIO_SET_BANK(part, bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +static inline unsigned int s5p_gpio_base(int gpio) > { > - if (cpu_is_exynos5()) { > - if (proid_is_exynos5420()) { > - if (nr < EXYNOS5420_GPIO_PART1_MAX) > - return EXYNOS5420_GPIO_PART1_BASE; > - else if (nr < EXYNOS5420_GPIO_PART2_MAX) > - return EXYNOS5420_GPIO_PART2_BASE; > - else if (nr < EXYNOS5420_GPIO_PART3_MAX) > - return EXYNOS5420_GPIO_PART3_BASE; > - else > - return EXYNOS5420_GPIO_PART4_BASE; > - } else { > - if (nr < EXYNOS5_GPIO_PART1_MAX) > - return EXYNOS5_GPIO_PART1_BASE; > - else if (nr < EXYNOS5_GPIO_PART2_MAX) > - return EXYNOS5_GPIO_PART2_BASE; > - else > - return EXYNOS5_GPIO_PART3_BASE; > - } > - } else if (cpu_is_exynos4()) { > - if (nr < EXYNOS4_GPIO_PART1_MAX) > - return EXYNOS4_GPIO_PART1_BASE; > - else > - return EXYNOS4_GPIO_PART2_BASE; > + unsigned gpio_part = S5P_GPIO_GET_PART(gpio); > + > + switch (gpio_part) { > + case 1: > + return samsung_get_base_gpio_part1(); > + case 2: > + return samsung_get_base_gpio_part2(); > + case 3: > + return samsung_get_base_gpio_part3(); > + case 4: > + return samsung_get_base_gpio_part4(); > + default: > + return 0; > } > - > - return 0; > -} > - > -static inline unsigned int s5p_gpio_part_max(int nr) > -{ > - if (cpu_is_exynos5()) { > - if (proid_is_exynos5420()) { > - if (nr < EXYNOS5420_GPIO_PART1_MAX) > - return 0; > - else if (nr < EXYNOS5420_GPIO_PART2_MAX) > - return EXYNOS5420_GPIO_PART1_MAX; > - else if (nr < EXYNOS5420_GPIO_PART3_MAX) > - return EXYNOS5420_GPIO_PART2_MAX; > - else if (nr < EXYNOS5420_GPIO_PART4_MAX) > - return EXYNOS5420_GPIO_PART3_MAX; > - else > - return EXYNOS5420_GPIO_PART4_MAX; > - } else { > - if (nr < EXYNOS5_GPIO_PART1_MAX) > - return 0; > - else if (nr < EXYNOS5_GPIO_PART2_MAX) > - return EXYNOS5_GPIO_PART1_MAX; > - else > - return EXYNOS5_GPIO_PART2_MAX; > - } > - } else if (cpu_is_exynos4()) { > - if (proid_is_exynos4412()) { > - if (nr < EXYNOS4X12_GPIO_PART1_MAX) > - return 0; > - else if (nr < EXYNOS4X12_GPIO_PART2_MAX) > - return EXYNOS4X12_GPIO_PART1_MAX; > - else > - return EXYNOS4X12_GPIO_PART2_MAX; > - } else { > - if (nr < EXYNOS4_GPIO_PART1_MAX) > - return 0; > - else > - return EXYNOS4_GPIO_PART1_MAX; > - } > - } > - > - return 0; > } > #endif > > diff --git a/arch/arm/include/asm/arch-s5pc1xx/gpio.h > b/arch/arm/include/asm/arch-s5pc1xx/gpio.h > index ac60fe6..c2d9244 100644 > --- a/arch/arm/include/asm/arch-s5pc1xx/gpio.h > +++ b/arch/arm/include/asm/arch-s5pc1xx/gpio.h > @@ -125,20 +125,45 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int > gpio, int mode); > /* GPIO pins per bank */ > #define GPIO_PER_BANK 8 > > -static inline unsigned int s5p_gpio_base(int nr) > -{ > - return S5PC110_GPIO_BASE; > -} > +#define S5P_GPIO_PART_SHIFT (24) > +#define S5P_GPIO_PART_MASK (0xff) > +#define S5P_GPIO_BANK_SHIFT (8) > +#define S5P_GPIO_BANK_MASK (0xffff) > +#define S5P_GPIO_PIN_MASK (0xff) > + > +#define S5P_GPIO_SET_PART(x) \ > + ((x & S5P_GPIO_PART_MASK) << S5P_GPIO_PART_SHIFT) > + > +#define S5P_GPIO_GET_PART(x) \ > + ((x >> S5P_GPIO_PART_SHIFT) & S5P_GPIO_PART_MASK) > + > +#define S5P_GPIO_SET_PIN(x) \ > + (x & S5P_GPIO_PIN_MASK) > > -static inline unsigned int s5p_gpio_part_max(int nr) > +#define S5PC100_SET_BANK(bank) \ > + (((unsigned)&(((struct s5pc100_gpio *) \ > + S5PC100_GPIO_BASE)->bank) - S5PC100_GPIO_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define S5PC110_SET_BANK(bank) \ > + ((((unsigned)&(((struct s5pc110_gpio *) \ > + S5PC110_GPIO_BASE)->bank) - S5PC110_GPIO_BASE) \ > + & S5P_GPIO_BANK_MASK) << S5P_GPIO_BANK_SHIFT) > + > +#define s5pc100_gpio_get(bank, pin) \ > + (S5P_GPIO_SET_PART(0) | \ > + S5PC100_SET_BANK(bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +#define s5pc110_gpio_get(bank, pin) \ > + (S5P_GPIO_SET_PART(0) | \ > + S5PC110_SET_BANK(bank) | \ > + S5P_GPIO_SET_PIN(pin)) > + > +static inline unsigned int s5p_gpio_base(int nr) > { > - return 0; > + return samsung_get_base_gpio(); > } > - > -#define s5pc110_gpio_get_nr(bank, pin) \ > - ((((((unsigned int)&(((struct s5pc110_gpio *)S5PC110_GPIO_BASE)->bank))\ > - - S5PC110_GPIO_BASE) / sizeof(struct s5p_gpio_bank)) \ > - * GPIO_PER_BANK) + pin) > #endif > > /* Pin configurations */ > diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c > index be15357..1e96fdc 100644 > --- a/board/samsung/trats2/trats2.c > +++ b/board/samsung/trats2/trats2.c > @@ -144,17 +144,17 @@ static void board_init_i2c(void) > int get_soft_i2c_scl_pin(void) > { > if (I2C_ADAP_HWNR) > - return exynos4x12_gpio_part2_get_nr(m2, 1); /* I2C9 */ > + return exynos4x12_gpio_get(2, m2, 1); /* I2C9 */ > else > - return exynos4x12_gpio_part1_get_nr(f1, 4); /* I2C8 */ > + return exynos4x12_gpio_get(1, f1, 4); /* I2C8 */ > } > > int get_soft_i2c_sda_pin(void) > { > if (I2C_ADAP_HWNR) > - return exynos4x12_gpio_part2_get_nr(m2, 0); /* I2C9 */ > + return exynos4x12_gpio_get(2, m2, 0); /* I2C9 */ > else > - return exynos4x12_gpio_part1_get_nr(f1, 5); /* I2C8 */ > + return exynos4x12_gpio_get(1, f1, 5); /* I2C8 */ > } > #endif > > diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c > index 7eeb96d..11a0472 100644 > --- a/drivers/gpio/s5p_gpio.c > +++ b/drivers/gpio/s5p_gpio.c > @@ -9,6 +9,11 @@ > #include <asm/io.h> > #include <asm/gpio.h> > > +#define S5P_GPIO_GET_BANK(x) ((x >> S5P_GPIO_BANK_SHIFT) \ > + & S5P_GPIO_BANK_MASK) > + > +#define S5P_GPIO_GET_PIN(x) (x & S5P_GPIO_PIN_MASK) > + > #define CON_MASK(x) (0xf << ((x) << 2)) > #define CON_SFR(x, v) ((v) << ((x) << 2)) > > @@ -124,17 +129,15 @@ void s5p_gpio_set_rate(struct s5p_gpio_bank *bank, int > gpio, int mode) > > struct s5p_gpio_bank *s5p_gpio_get_bank(unsigned gpio) > { > - int bank; > - unsigned g = gpio - s5p_gpio_part_max(gpio); > + unsigned bank = S5P_GPIO_GET_BANK(gpio); > + unsigned base = s5p_gpio_base(gpio); > > - bank = g / GPIO_PER_BANK; > - bank *= sizeof(struct s5p_gpio_bank); > - return (struct s5p_gpio_bank *) (s5p_gpio_base(gpio) + bank); > + return (struct s5p_gpio_bank *)(base + bank); > } > > int s5p_gpio_get_pin(unsigned gpio) > { > - return gpio % GPIO_PER_BANK; > + return S5P_GPIO_GET_PIN(gpio); > } > > /* Common GPIO API */ > diff --git a/include/configs/s5p_goni.h b/include/configs/s5p_goni.h > index 0590d20..4cdf937 100644 > --- a/include/configs/s5p_goni.h > +++ b/include/configs/s5p_goni.h > @@ -208,8 +208,8 @@ > /* > * I2C Settings > */ > -#define CONFIG_SOFT_I2C_GPIO_SCL s5pc110_gpio_get_nr(j4, 3) > -#define CONFIG_SOFT_I2C_GPIO_SDA s5pc110_gpio_get_nr(j4, 0) > +#define CONFIG_SOFT_I2C_GPIO_SCL s5pc110_gpio_get(j4, 3) > +#define CONFIG_SOFT_I2C_GPIO_SDA s5pc110_gpio_get(j4, 0) > > #define CONFIG_SYS_I2C > #define CONFIG_SYS_I2C_SOFT /* I2C bit-banged */ > diff --git a/include/configs/s5pc210_universal.h > b/include/configs/s5pc210_universal.h > index d9e4c56..02a1c99 100644 > --- a/include/configs/s5pc210_universal.h > +++ b/include/configs/s5pc210_universal.h > @@ -229,8 +229,8 @@ > /* > * I2C Settings > */ > -#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_part1_get_nr(b, 7) > -#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_part1_get_nr(b, 6) > +#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_get(1, b, 7) > +#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_get(1, b, 6) > > #define CONFIG_SYS_I2C > #define CONFIG_SYS_I2C_SOFT /* I2C bit-banged */ > @@ -253,10 +253,10 @@ > */ > #define CONFIG_SOFT_SPI > #define CONFIG_SOFT_SPI_MODE SPI_MODE_3 > -#define CONFIG_SOFT_SPI_GPIO_SCLK exynos4_gpio_part2_get_nr(y3, 1) > -#define CONFIG_SOFT_SPI_GPIO_MOSI exynos4_gpio_part2_get_nr(y3, 3) > -#define CONFIG_SOFT_SPI_GPIO_MISO exynos4_gpio_part2_get_nr(y3, 0) > -#define CONFIG_SOFT_SPI_GPIO_CS exynos4_gpio_part2_get_nr(y4, 3) > +#define CONFIG_SOFT_SPI_GPIO_SCLK exynos4_gpio_get(2, y3, 1) > +#define CONFIG_SOFT_SPI_GPIO_MOSI exynos4_gpio_get(2, y3, 3) > +#define CONFIG_SOFT_SPI_GPIO_MISO exynos4_gpio_get(2, y3, 0) > +#define CONFIG_SOFT_SPI_GPIO_CS exynos4_gpio_get(2, y4, 3) > > #define SPI_DELAY udelay(1) > #undef SPI_INIT > diff --git a/include/configs/trats.h b/include/configs/trats.h > index 0877142..9727f7a 100644 > --- a/include/configs/trats.h > +++ b/include/configs/trats.h > @@ -282,8 +282,8 @@ > #include <asm/arch/gpio.h> > > /* I2C FG */ > -#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_part2_get_nr(y4, 1) > -#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_part2_get_nr(y4, 0) > +#define CONFIG_SOFT_I2C_GPIO_SCL exynos4_gpio_get(2, y4, 1) > +#define CONFIG_SOFT_I2C_GPIO_SDA exynos4_gpio_get(2, y4, 0) > > #define CONFIG_POWER > #define CONFIG_POWER_I2C > Thanks, Minkyu Kang. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot