1 #include <asm/arch/gpio.h>
5 static void cs_low(struct spi_platform_data *spi)
7 gpio_set_value(spi->cs_bank, spi->cs_num, 0);
10 static void cs_high(struct spi_platform_data *spi)
12 gpio_set_value(spi->cs_bank, spi->cs_num, 1);
15 static void clk_low(struct spi_platform_data *spi)
17 gpio_set_value(spi->clk_bank, spi->clk_num, 0);
20 static void clk_high(struct spi_platform_data *spi)
22 gpio_set_value(spi->clk_bank, spi->clk_num, 1);
25 static void si_low(struct spi_platform_data *spi)
27 gpio_set_value(spi->si_bank, spi->si_num, 0);
30 static void si_high(struct spi_platform_data *spi)
32 gpio_set_value(spi->si_bank, spi->si_num, 1);
35 static char so_read(struct spi_platform_data *spi)
37 return gpio_get_value(spi->so_bank, spi->so_num);
40 void spi_write_byte(struct spi_platform_data *spi, unsigned char address, unsigned char command)
44 unsigned char DELAY = 1;
46 data = (address << 8) + command;
56 for (j = PACKET_LEN; j >= 0; j--)
60 /* data high or low */
61 if ((data >> j) & 0x1)
76 #ifdef UNUSED_FUNCTIONS
77 unsigned char spi_read_byte(struct spi_platform_data *spi, unsigned char select, unsigned char address)
80 static unsigned int first = 1;
81 unsigned char DELAY = 1;
82 unsigned short data = 0;
85 data = (select << 8) + address;
95 for (j = PACKET_LEN + 8; j >= 0; j--)
101 /* data high or low */
102 if ((data >> (j - 8)) & 0x1)
111 gpio_cfg_pin(spi->so_bank, spi->so_num, GPIO_INPUT);
117 if (so_read(spi) & 0x1)
132 gpio_cfg_pin(spi->so_bank, spi->so_num, GPIO_OUTPUT);