Message ID | 1348141834-3603-2-git-send-email-p.wilczek@samsung.com |
---|---|
State | Changes Requested |
Delegated to: | Minkyu Kang |
Headers | show |
This patchset add software SPI support on Samsung Universal C210 board. In SPI software driver #ifdef CONFIG_SYS_IMMR in spi_init function is added. Changes in v2: - removed space between # and include; - changed return in spi_cs_is_valid function; Changes in v3: - Patch is split in two patches: - the first modifies software SPI driver; - the second patch add support for SPI on Universal C210 board Piotr Wilczek (2): drivers: spi: modify soft spi driver exynos4: universal_C210: use software SPI board/samsung/universal_c210/universal.c | 34 ++++++++++++++++++++++++++++++ drivers/spi/soft_spi.c | 3 ++ include/configs/s5pc210_universal.h | 19 ++++++++++++++++ 3 files changed, 56 insertions(+), 0 deletions(-)
Dear Piotr Wilczek, On 24 September 2012 20:56, Piotr Wilczek <p.wilczek@samsung.com> wrote: > This patchset add software SPI support on Samsung Universal C210 board. > In SPI software driver #ifdef CONFIG_SYS_IMMR in spi_init function is added. > > Changes in v2: > - removed space between # and include; > - changed return in spi_cs_is_valid function; > Changes in v3: > - Patch is split in two patches: > - the first modifies software SPI driver; > - the second patch add support for SPI on Universal C210 board > > Piotr Wilczek (2): > drivers: spi: modify soft spi driver > exynos4: universal_C210: use software SPI > > board/samsung/universal_c210/universal.c | 34 ++++++++++++++++++++++++++++++ > drivers/spi/soft_spi.c | 3 ++ > include/configs/s5pc210_universal.h | 19 ++++++++++++++++ > 3 files changed, 56 insertions(+), 0 deletions(-) > applied to u-boot-samsung. Thanks. Minkyu Kang.
On 10 October 2012 20:55, Minkyu Kang <promsoft@gmail.com> wrote: > Dear Piotr Wilczek, > > On 24 September 2012 20:56, Piotr Wilczek <p.wilczek@samsung.com> wrote: >> This patchset add software SPI support on Samsung Universal C210 board. >> In SPI software driver #ifdef CONFIG_SYS_IMMR in spi_init function is added. >> >> Changes in v2: >> - removed space between # and include; >> - changed return in spi_cs_is_valid function; >> Changes in v3: >> - Patch is split in two patches: >> - the first modifies software SPI driver; >> - the second patch add support for SPI on Universal C210 board >> >> Piotr Wilczek (2): >> drivers: spi: modify soft spi driver >> exynos4: universal_C210: use software SPI >> >> board/samsung/universal_c210/universal.c | 34 ++++++++++++++++++++++++++++++ >> drivers/spi/soft_spi.c | 3 ++ >> include/configs/s5pc210_universal.h | 19 ++++++++++++++++ >> 3 files changed, 56 insertions(+), 0 deletions(-) >> > > applied to u-boot-samsung. > This patchset was reverted. Thanks. Minkyu Kang.
diff --git a/board/samsung/universal_c210/universal.c b/board/samsung/universal_c210/universal.c index ded97ca..6947e83 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> @@ -33,6 +34,9 @@ #include <asm/arch/cpu.h> #include <max8998_pmic.h> #include <asm/arch/watchdog.h> +#if defined(CONFIG_SOFT_SPI) +# include <asm/gpio.h> +#endif DECLARE_GLOBAL_DATA_PTR; @@ -284,3 +288,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 bus == 0 && cs == 0; +} + 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 SPI_INIT; #endif } diff --git a/include/configs/s5pc210_universal.h b/include/configs/s5pc210_universal.h index 46f2663..f7a7443 100644 --- a/include/configs/s5pc210_universal.h +++ b/include/configs/s5pc210_universal.h @@ -264,4 +264,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 */