[U-Boot] [PATCH] arm:exynos4:universal_c210: implement software SPI
Minkyu Kang
promsoft at gmail.com
Sat Sep 15 11:05:50 CEST 2012
Dear Piotr,
On 29 August 2012 17:15, Piotr Wilczek <p.wilczek at samsung.com> wrote:
> This patch implements software SPI for the universal C210 board.
>
> Signed-off-by: Piotr Wilczek <p.wilczek at samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park at samsung.com>
> CC: Minkyu Kang <mk7.kang at samsung.com>
> CC: Wolfgang Denk <wd at denx.de>
> CC: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
> board/samsung/universal_c210/universal.c | 36 ++++++++++++++++++++++++++++++
> drivers/spi/soft_spi.c | 7 +++++-
> include/configs/s5pc210_universal.h | 19 +++++++++++++++
> 3 files changed, 61 insertions(+), 1 deletions(-)
>
> diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c
> index 8a114e6..772ade5 100644
> --- a/board/samsung/universal_c210/universal.c
> +++ b/board/samsung/universal_c210/universal.c
> @@ -24,6 +24,7 @@
>
> #include <common.h>
> #include <asm/io.h>
> +#include <spi.h>
> #include <asm/arch/adc.h>
> #include <asm/arch/gpio.h>
> #include <asm/arch/mmc.h>
> @@ -34,6 +35,10 @@
> #include <max8998_pmic.h>
> #include <asm/arch/watchdog.h>
>
> +#if defined(CONFIG_SOFT_SPI)
> +# include <asm/gpio.h>
remove space between # and include.
> +#endif
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> struct exynos4_gpio_part1 *gpio1;
> @@ -288,3 +293,34 @@ int board_early_init_f(void)
>
> return 0;
> }
> +
> +void soft_spi_init()
> +{
> + gpio_direction_output(CONFIG_SOFT_SPI_GPIO_SCLK,
> + CONFIG_SOFT_SPI_MODE & SPI_CPOL);
> + gpio_direction_output(CONFIG_SOFT_SPI_GPIO_MOSI, 1);
> + gpio_direction_input(CONFIG_SOFT_SPI_GPIO_MISO);
> + gpio_direction_output(CONFIG_SOFT_SPI_GPIO_CS,
> + !(CONFIG_SOFT_SPI_MODE & SPI_CS_HIGH));
> +}
> +
> +void spi_cs_activate(struct spi_slave *slave)
> +{
> + gpio_set_value(CONFIG_SOFT_SPI_GPIO_CS,
> + !(CONFIG_SOFT_SPI_MODE & SPI_CS_HIGH));
> + SPI_SCL(1);
> + gpio_set_value(CONFIG_SOFT_SPI_GPIO_CS,
> + CONFIG_SOFT_SPI_MODE & SPI_CS_HIGH);
> +}
> +
> +void spi_cs_deactivate(struct spi_slave *slave)
> +{
> + gpio_set_value(CONFIG_SOFT_SPI_GPIO_CS,
> + !(CONFIG_SOFT_SPI_MODE & SPI_CS_HIGH));
> +}
> +
> +int spi_cs_is_valid(unsigned int bus, unsigned int cs)
> +{
> + return 1;
always return 1?
> +}
> +
> diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
> index 13df8cb..a0a3012 100644
> --- a/drivers/spi/soft_spi.c
> +++ b/drivers/spi/soft_spi.c
> @@ -29,6 +29,10 @@
>
> #include <malloc.h>
>
> +#if defined(CONFIG_SOFT_SPI)
> +# include <asm/gpio.h>
> +#endif
> +
> /*-----------------------------------------------------------------------
> * Definitions
> */
> @@ -59,8 +63,9 @@ static inline struct soft_spi_slave *to_soft_spi(struct spi_slave *slave)
> void spi_init (void)
> {
> #ifdef SPI_INIT
> +#ifdef CONFIG_SYS_IMMR
> volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
> -
> +#endif
Is it related change with this patch?
> SPI_INIT;
> #endif
> }
> diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h
> index 7978317..a338840 100644
> --- a/include/configs/s5pc210_universal.h
> +++ b/include/configs/s5pc210_universal.h
> @@ -266,4 +266,23 @@
> #define CONFIG_USB_GADGET_S3C_UDC_OTG
> #define CONFIG_USB_GADGET_DUALSPEED
>
> +/*
> + * SPI Settings
> + */
> +#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 SPI_DELAY udelay(1)
> +#define SPI_INIT soft_spi_init()
> +#define SPI_SCL(bit) gpio_set_value(CONFIG_SOFT_SPI_GPIO_SCLK, bit)
> +#define SPI_SDA(bit) gpio_set_value(CONFIG_SOFT_SPI_GPIO_MOSI, bit)
> +#define SPI_READ gpio_get_value(CONFIG_SOFT_SPI_GPIO_MISO)
> +#ifndef __ASSEMBLY__
> +void soft_spi_init(void);
> +#endif
> +
> #endif /* __CONFIG_H */
> --
> 1.7.5.4
Thanks.
Minkyu Kang.
--
from. prom.
www.promsoft.net
More information about the U-Boot
mailing list