[U-Boot] [PATCH 1/8 V2] EXYNOS5: Add pinmux support for SPI
Simon Glass
sjg at chromium.org
Tue Oct 2 08:02:55 CEST 2012
Hi,
I haven't seen any more comments on this series, nor has it been
applied so far as I can see. Any word?
On Tue, Jul 31, 2012 at 4:00 AM, Rajeshwari Shinde
<rajeshwari.s at samsung.com> wrote:
> This patch adds pinmux support for SPI channels
>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s at samsung.com>
Acked-by: Simon Glass <sjg at chromium.org>
> ---
> Changes in V2:
> - None.
> arch/arm/cpu/armv7/exynos/pinmux.c | 51 ++++++++++++++++++++++++++++-
> arch/arm/include/asm/arch-exynos/periph.h | 5 +++
> arch/arm/include/asm/arch-exynos/pinmux.h | 3 ++
> 3 files changed, 58 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c
> index 7776add..13f75e0 100644
> --- a/arch/arm/cpu/armv7/exynos/pinmux.c
> +++ b/arch/arm/cpu/armv7/exynos/pinmux.c
> @@ -230,6 +230,49 @@ static void exynos5_i2c_config(int peripheral, int flags)
> }
> }
>
> +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 = 2; i < 4; i++)
> + s5p_gpio_cfg_pin(&gpio2->f0, i, GPIO_FUNC(0x4));
> + for (i = 4; i < 6; i++)
> + s5p_gpio_cfg_pin(&gpio2->e0, i, 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) {
> @@ -257,11 +300,17 @@ static int exynos5_pinmux_config(int peripheral, int flags)
> case PERIPH_ID_I2C7:
> exynos5_i2c_config(peripheral, flags);
> 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;
> }
> -
I think U-Boot likes to keep a blank line before the 'return' at the
end of a function.
> return 0;
> }
>
> diff --git a/arch/arm/include/asm/arch-exynos/periph.h b/arch/arm/include/asm/arch-exynos/periph.h
> index b861d7d..dafc3f3 100644
> --- a/arch/arm/include/asm/arch-exynos/periph.h
> +++ b/arch/arm/include/asm/arch-exynos/periph.h
> @@ -43,6 +43,11 @@ enum periph_id {
> PERIPH_ID_SDMMC2,
> PERIPH_ID_SDMMC3,
> PERIPH_ID_SROMC,
> + PERIPH_ID_SPI0,
> + PERIPH_ID_SPI1,
> + PERIPH_ID_SPI2,
> + PERIPH_ID_SPI3,
> + PERIPH_ID_SPI4,
> PERIPH_ID_UART0,
> PERIPH_ID_UART1,
> PERIPH_ID_UART2,
> diff --git a/arch/arm/include/asm/arch-exynos/pinmux.h b/arch/arm/include/asm/arch-exynos/pinmux.h
> index 10ea736..57c80be 100644
> --- a/arch/arm/include/asm/arch-exynos/pinmux.h
> +++ b/arch/arm/include/asm/arch-exynos/pinmux.h
> @@ -36,6 +36,9 @@ enum {
> /* Flags for eMMC */
> PINMUX_FLAG_8BIT_MODE = 1 << 0, /* SDMMC 8-bit mode */
>
> + /* Flag for SPI */
> + PINMUX_FLAG_SLAVE_MODE = 1 << 0, /* Slave mode */
> +
> /* Flags for SROM controller */
> PINMUX_FLAG_BANK = 3 << 0, /* bank number (0-3) */
> PINMUX_FLAG_16BIT = 1 << 2, /* 16-bit width */
> --
> 1.7.4.4
>
Regards,
Simon
More information about the U-Boot
mailing list