|
@@ -265,10 +265,74 @@ static int exynos5_pinmux_config(int peripheral, int flags)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static void exynos4_i2c_config(int peripheral, int flags)
|
|
|
+{
|
|
|
+ struct exynos4_gpio_part1 *gpio1 =
|
|
|
+ (struct exynos4_gpio_part1 *) samsung_get_base_gpio_part1();
|
|
|
+
|
|
|
+ switch (peripheral) {
|
|
|
+ case PERIPH_ID_I2C0:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d1, 0, GPIO_FUNC(0x2));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d1, 1, GPIO_FUNC(0x2));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C1:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d1, 2, GPIO_FUNC(0x2));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d1, 3, GPIO_FUNC(0x2));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C2:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->a0, 6, GPIO_FUNC(0x3));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->a0, 7, GPIO_FUNC(0x3));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C3:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->a1, 2, GPIO_FUNC(0x3));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->a1, 3, GPIO_FUNC(0x3));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C4:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->b, 2, GPIO_FUNC(0x3));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->b, 3, GPIO_FUNC(0x3));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C5:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->b, 6, GPIO_FUNC(0x3));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->b, 7, GPIO_FUNC(0x3));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C6:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->c1, 3, GPIO_FUNC(0x4));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->c1, 4, GPIO_FUNC(0x4));
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_I2C7:
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d0, 2, GPIO_FUNC(0x3));
|
|
|
+ s5p_gpio_cfg_pin(&gpio1->d0, 3, GPIO_FUNC(0x3));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+static int exynos4_pinmux_config(int peripheral, int flags)
|
|
|
+{
|
|
|
+ switch (peripheral) {
|
|
|
+ case PERIPH_ID_I2C0:
|
|
|
+ case PERIPH_ID_I2C1:
|
|
|
+ case PERIPH_ID_I2C2:
|
|
|
+ case PERIPH_ID_I2C3:
|
|
|
+ case PERIPH_ID_I2C4:
|
|
|
+ case PERIPH_ID_I2C5:
|
|
|
+ case PERIPH_ID_I2C6:
|
|
|
+ case PERIPH_ID_I2C7:
|
|
|
+ exynos4_i2c_config(peripheral, flags);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ debug("%s: invalid peripheral %d", __func__, peripheral);
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
int exynos_pinmux_config(int peripheral, int flags)
|
|
|
{
|
|
|
if (cpu_is_exynos5())
|
|
|
return exynos5_pinmux_config(peripheral, flags);
|
|
|
+ else if (cpu_is_exynos4())
|
|
|
+ return exynos4_pinmux_config(peripheral, flags);
|
|
|
else {
|
|
|
debug("pinmux functionality not supported\n");
|
|
|
return -1;
|