mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
exynos4: universal_C210: use software SPI
This patch use software spi on Samsung Universal C210 board. Signed-off-by: Piotr Wilczek <p.wilczek@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
This commit is contained in:

committed by
Minkyu Kang

parent
a6f173073b
commit
ff0fedd585
@ -23,7 +23,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <spi.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/gpio.h>
|
||||||
#include <asm/arch/adc.h>
|
#include <asm/arch/adc.h>
|
||||||
#include <asm/arch/gpio.h>
|
#include <asm/arch/gpio.h>
|
||||||
#include <asm/arch/mmc.h>
|
#include <asm/arch/mmc.h>
|
||||||
@ -52,24 +54,6 @@ static int get_hwrev(void)
|
|||||||
|
|
||||||
static void check_hw_revision(void);
|
static void check_hw_revision(void);
|
||||||
|
|
||||||
int board_init(void)
|
|
||||||
{
|
|
||||||
gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
|
|
||||||
gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
|
|
||||||
|
|
||||||
gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
|
|
||||||
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
|
|
||||||
|
|
||||||
#if defined(CONFIG_PMIC)
|
|
||||||
pmic_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
check_hw_revision();
|
|
||||||
printf("HW Revision:\t0x%x\n", board_rev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int dram_init(void)
|
int dram_init(void)
|
||||||
{
|
{
|
||||||
gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE) +
|
gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE) +
|
||||||
@ -284,3 +268,70 @@ int board_early_init_f(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SOFT_SPI
|
||||||
|
static void soft_spi_init(void)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
void universal_spi_scl(int bit)
|
||||||
|
{
|
||||||
|
gpio_set_value(CONFIG_SOFT_SPI_GPIO_SCLK, bit);
|
||||||
|
}
|
||||||
|
|
||||||
|
void universal_spi_sda(int bit)
|
||||||
|
{
|
||||||
|
gpio_set_value(CONFIG_SOFT_SPI_GPIO_MOSI, bit);
|
||||||
|
}
|
||||||
|
|
||||||
|
int universal_spi_read(void)
|
||||||
|
{
|
||||||
|
return gpio_get_value(CONFIG_SOFT_SPI_GPIO_MISO);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int board_init(void)
|
||||||
|
{
|
||||||
|
gpio1 = (struct exynos4_gpio_part1 *) EXYNOS4_GPIO_PART1_BASE;
|
||||||
|
gpio2 = (struct exynos4_gpio_part2 *) EXYNOS4_GPIO_PART2_BASE;
|
||||||
|
|
||||||
|
gd->bd->bi_arch_number = MACH_TYPE_UNIVERSAL_C210;
|
||||||
|
gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
|
||||||
|
|
||||||
|
#if defined(CONFIG_PMIC)
|
||||||
|
pmic_init();
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_SOFT_SPI
|
||||||
|
soft_spi_init();
|
||||||
|
#endif
|
||||||
|
check_hw_revision();
|
||||||
|
printf("HW Revision:\t0x%x\n", board_rev);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@ -263,4 +263,25 @@
|
|||||||
#define CONFIG_USB_GADGET_S3C_UDC_OTG
|
#define CONFIG_USB_GADGET_S3C_UDC_OTG
|
||||||
#define CONFIG_USB_GADGET_DUALSPEED
|
#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)
|
||||||
|
#undef SPI_INIT
|
||||||
|
#define SPI_SCL(bit) universal_spi_scl(bit)
|
||||||
|
#define SPI_SDA(bit) universal_spi_sda(bit)
|
||||||
|
#define SPI_READ universal_spi_read()
|
||||||
|
#ifndef __ASSEMBLY__
|
||||||
|
void universal_spi_scl(int bit);
|
||||||
|
void universal_spi_sda(int bit);
|
||||||
|
int universal_spi_read(void);
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __CONFIG_H */
|
#endif /* __CONFIG_H */
|
||||||
|
Reference in New Issue
Block a user