|
@@ -112,6 +112,7 @@ static int exynos5_mmc_config(int peripheral, int flags)
|
|
|
s5p_gpio_set_pull(bank, i, GPIO_PULL_UP);
|
|
|
s5p_gpio_set_drv(bank, i, GPIO_DRV_4X);
|
|
|
}
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -240,6 +241,49 @@ static void exynos5_i2s_config(int peripheral)
|
|
|
s5p_gpio_cfg_pin(&gpio1->b0, i, GPIO_FUNC(0x02));
|
|
|
}
|
|
|
|
|
|
+void exynos5_spi_config(int peripheral)
|
|
|
+{
|
|
|
+ int cfg = 0, pin = 0, i;
|
|
|
+ struct s5p_gpio_bank *bank = NULL;
|
|
|
+ struct exynos5_gpio_part1 *gpio1 =
|
|
|
+ (struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1();
|
|
|
+ struct exynos5_gpio_part2 *gpio2 =
|
|
|
+ (struct exynos5_gpio_part2 *) samsung_get_base_gpio_part2();
|
|
|
+
|
|
|
+ switch (peripheral) {
|
|
|
+ case PERIPH_ID_SPI0:
|
|
|
+ bank = &gpio1->a2;
|
|
|
+ cfg = GPIO_FUNC(0x2);
|
|
|
+ pin = 0;
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_SPI1:
|
|
|
+ bank = &gpio1->a2;
|
|
|
+ cfg = GPIO_FUNC(0x2);
|
|
|
+ pin = 4;
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_SPI2:
|
|
|
+ bank = &gpio1->b1;
|
|
|
+ cfg = GPIO_FUNC(0x5);
|
|
|
+ pin = 1;
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_SPI3:
|
|
|
+ bank = &gpio2->f1;
|
|
|
+ cfg = GPIO_FUNC(0x2);
|
|
|
+ pin = 0;
|
|
|
+ break;
|
|
|
+ case PERIPH_ID_SPI4:
|
|
|
+ for (i = 0; i < 2; i++) {
|
|
|
+ s5p_gpio_cfg_pin(&gpio2->f0, i + 2, GPIO_FUNC(0x4));
|
|
|
+ s5p_gpio_cfg_pin(&gpio2->e0, i + 4, GPIO_FUNC(0x4));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ if (peripheral != PERIPH_ID_SPI4) {
|
|
|
+ for (i = pin; i < pin + 4; i++)
|
|
|
+ s5p_gpio_cfg_pin(bank, i, cfg);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static int exynos5_pinmux_config(int peripheral, int flags)
|
|
|
{
|
|
|
switch (peripheral) {
|
|
@@ -270,6 +314,13 @@ static int exynos5_pinmux_config(int peripheral, int flags)
|
|
|
case PERIPH_ID_I2S1:
|
|
|
exynos5_i2s_config(peripheral);
|
|
|
break;
|
|
|
+ case PERIPH_ID_SPI0:
|
|
|
+ case PERIPH_ID_SPI1:
|
|
|
+ case PERIPH_ID_SPI2:
|
|
|
+ case PERIPH_ID_SPI3:
|
|
|
+ case PERIPH_ID_SPI4:
|
|
|
+ exynos5_spi_config(peripheral);
|
|
|
+ break;
|
|
|
default:
|
|
|
debug("%s: invalid peripheral %d", __func__, peripheral);
|
|
|
return -1;
|