s5pc1xx: move LCD spi function to s5p-spi.c
authorDonghwa Lee <dh09.lee@samsung.com>
Fri, 26 Feb 2010 06:46:02 +0000 (15:46 +0900)
committerDonghwa Lee <dh09.lee@samsung.com>
Fri, 26 Feb 2010 06:46:02 +0000 (15:46 +0900)
drivers/video/Makefile
drivers/video/s5p-spi.c [new file with mode: 0644]
drivers/video/s5p-spi.h
drivers/video/s6d16a0x.c
drivers/video/s6e63m0.c

index 184ff98..3633563 100644 (file)
@@ -38,7 +38,7 @@ COBJS-$(CONFIG_SED156X) += sed156x.o
 COBJS-$(CONFIG_VIDEO_SM501) += sm501.o
 COBJS-$(CONFIG_VIDEO_SMI_LYNXEM) += smiLynxEM.o
 COBJS-$(CONFIG_VIDEO_VCXK) += bus_vcxk.o
-COBJS-$(CONFIG_S5PC1XXFB) += s5p-fb.o s5p-fimd.o
+COBJS-$(CONFIG_S5PC1XXFB) += s5p-fb.o s5p-fimd.o s5p-spi.o
 COBJS-$(CONFIG_S6E63M0) += s6e63m0.o
 COBJS-$(CONFIG_S6D16A0X) += s6d16a0x.o
 COBJS-$(CONFIG_AMS701KA) += ams701ka.o
diff --git a/drivers/video/s5p-spi.c b/drivers/video/s5p-spi.c
new file mode 100644 (file)
index 0000000..4734574
--- /dev/null
@@ -0,0 +1,136 @@
+#include <asm/arch/gpio.h>
+#include "s5p-spi.h"
+
+
+static void cs_low(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->cs_bank, spi->cs_num, 0);
+}
+
+static void cs_high(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->cs_bank, spi->cs_num, 1);
+}
+
+static void clk_low(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->clk_bank, spi->clk_num, 0);
+}
+
+static void clk_high(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->clk_bank, spi->clk_num, 1);
+}
+
+static void si_low(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->si_bank, spi->si_num, 0);
+}
+
+static void si_high(struct spi_platform_data *spi)
+{
+       gpio_set_value(spi->si_bank, spi->si_num, 1);
+}
+
+static char so_read(struct spi_platform_data *spi)
+{
+       return gpio_get_value(spi->so_bank, spi->so_num);
+}
+
+void spi_write_byte(struct spi_platform_data *spi, unsigned char address, unsigned char command)
+{
+       int     j;
+       unsigned short data;
+       unsigned char DELAY = 1;
+
+       data = (address << 8) + command;
+
+       cs_high(spi);
+       si_high(spi);
+       clk_high(spi);
+       udelay(DELAY);
+
+       cs_low(spi);
+       udelay(DELAY);
+
+       for (j = PACKET_LEN; j >= 0; j--)
+       {
+               clk_low(spi);
+
+               /* data high or low */
+               if ((data >> j) & 0x1)
+                       si_high(spi);
+               else
+                       si_low(spi);
+
+               udelay(DELAY);
+
+               clk_high(spi);
+               udelay(DELAY);
+       }
+
+       cs_high(spi);
+       udelay(DELAY);
+}
+
+#ifdef UNUSED_FUNCTIONS
+unsigned char spi_read_byte(struct spi_platform_data *spi, unsigned char select, unsigned char address)
+{
+       int     j;
+       static unsigned int first = 1;
+       unsigned char DELAY = 1;
+       unsigned short data = 0;
+       char command = 0;
+
+       data = (select << 8) + address;
+
+       cs_high(spi);
+       si_high(spi);
+       clk_high(spi);
+       udelay(DELAY);
+
+       clk_low(spi);
+       udelay(DELAY);
+
+       for (j = PACKET_LEN + 8; j >= 0; j--)
+       {
+
+               if (j > 7) {
+                       clk_low(spi);
+
+                       /* data high or low */
+                       if ((data >> (j - 8)) & 0x1)
+                               si_high(spi);
+                       else
+                               si_low(spi);
+
+                       udelay(DELAY);
+                       clk_high(spi);
+               } else {
+                       if (first) {
+                               gpio_cfg_pin(spi->so_bank, spi->so_num, GPIO_INPUT);
+                               first = 0;
+                       }
+
+                       clk_low(spi);
+
+                       if (so_read(spi) & 0x1)
+                               command |= 1 << j;
+                       else
+                               command |= 0 << j;
+
+                       udelay(DELAY);
+                       clk_high(spi);
+               }
+
+               udelay(DELAY);
+       }
+
+       cs_high(spi);
+       udelay(DELAY);
+
+       gpio_cfg_pin(spi->so_bank, spi->so_num, GPIO_OUTPUT);
+
+       return command;
+}
+#endif
index 8fc480c..63a92e3 100644 (file)
@@ -1,7 +1,5 @@
-
 #define COMMAND_ONLY           0xFE
 #define DATA_ONLY              0xFF
-
 #define PACKET_LEN             8
 
 struct spi_platform_data {
@@ -18,3 +16,7 @@ struct spi_platform_data {
        unsigned int set_rev;
 };
 
+void spi_write_byte(struct spi_platform_data *spi,
+                               unsigned char address, unsigned char command);
+void spi_read_byte(struct spi_platform_data *spi,
+                               unsigned char address, unsigned char command);
index a40653a..a238b4e 100644 (file)
 /* these machine specific platform data would be setting at universal.c */
 struct spi_platform_data *s6d16a0x;
 
-void cs_low_(void)
-{
-       gpio_set_value(s6d16a0x->cs_bank, s6d16a0x->cs_num, 0);
-}
-
-void cs_high_(void)
-{
-       gpio_set_value(s6d16a0x->cs_bank, s6d16a0x->cs_num, 1);
-}
-
-void clk_low_(void)
-{
-       gpio_set_value(s6d16a0x->clk_bank, s6d16a0x->clk_num, 0);
-}
-
-void clk_high_(void)
-{
-       gpio_set_value(s6d16a0x->clk_bank, s6d16a0x->clk_num, 1);
-}
-
-void si_low_(void)
-{
-       gpio_set_value(s6d16a0x->si_bank, s6d16a0x->si_num, 0);
-}
-
-void si_high_(void)
-{
-       gpio_set_value(s6d16a0x->si_bank, s6d16a0x->si_num, 1);
-}
-
-char so_read_(void)
-{
-       return gpio_get_value(s6d16a0x->so_bank, s6d16a0x->so_num);
-}
-
 static const unsigned char SEQ_PASSWD2_SET[] = {
        0xF1, 0x5A,
        DATA_ONLY, 0x5A,
@@ -353,111 +318,13 @@ static const unsigned char SEQ_DISPOFF[] = {
        0x28, COMMAND_ONLY,
 };
 
-unsigned char Delay=1;
-
-static void s6d16a0x_c110_spi_write_byte(unsigned char address, unsigned char command)
-{
-       int     j;
-       unsigned short data;
-       data = (address << 8) + command;
-
-       cs_high_();
-       si_high_();
-       clk_high_();
-       udelay(Delay);
-
-       cs_low_();
-       udelay(Delay);
-
-       for (j = PACKET_LEN; j >= 0; j--)
-       {
-               clk_low_();
-
-               /* data high or low */
-               if ((data >> j) & 0x0001)
-                       si_high_();
-               else
-                       si_low_();
-
-               udelay(Delay);
-
-               clk_high_();
-               udelay(Delay);
-       }
-
-       cs_high_();
-       udelay(Delay);
-}
-
-#ifdef UNUSED_FUNCTIONS
-static unsigned char s6d16a0x_c110_spi_read_byte(unsigned char select, unsigned char address)
-{
-       int     j;
-       static unsigned int first = 1;
-       unsigned char DELAY=1;
-       unsigned short data = 0;
-       char command = 0;
-
-       data = (select << 8) + address;
-
-       cs_high();
-       si_high();
-       clk_high();
-       udelay(DELAY);
-
-       clk_low();
-       udelay(DELAY);
-
-       for (j = PACKET_LEN + 8; j >= 0; j--)
-       {
-
-               if (j > 7) {
-                       clk_low();
-
-                       /* data high or low */
-                       if ((data >> (j - 8)) & 0x0001)
-                               si_high();
-                       else
-                               si_low();
-
-                       udelay(DELAY);
-                       clk_high();
-               } else {
-                       if (first) {
-                               gpio_cfg_pin(s6d16a0x->so_bank, s6d16a0x->so_num, GPIO_INPUT);
-                               first = 0;
-                       }
-
-                       clk_low();
-
-                       if (so_read() & 0x1)
-                               command |= 1 << j;
-                       else
-                               command |= 0 << j;
-
-                       udelay(DELAY);
-                       clk_high();
-               }
-
-               udelay(DELAY);
-       }
-
-       cs_high();
-       udelay(DELAY);
-
-       gpio_cfg_pin(s6d16a0x->so_bank, s6d16a0x->so_num, GPIO_OUTPUT);
-
-       return command;
-}
-#endif
-
 static void s6d16a0x_spi_write(unsigned char address, unsigned char command)
 {
        if (address != DATA_ONLY)
-               s6d16a0x_c110_spi_write_byte(0x0, address);
+               spi_write_byte(s6d16a0x, 0x0, address);
 
        if (command != COMMAND_ONLY)
-               s6d16a0x_c110_spi_write_byte(0x1, command);
+               spi_write_byte(s6d16a0x, 0x1, command);
 }
 
 static void s6d16a0x_panel_send_sequence(const unsigned char *wbuf, unsigned int size_cmd)
index b3071b2..432d98a 100644 (file)
 #include "s5p-spi.h"
 
 
-unsigned int size_cmd;
 /* these machine specific platform data would be setting at universal.c */
 struct spi_platform_data *s6e63m0;
 
-void cs_low(void)
-{
-       gpio_set_value(s6e63m0->cs_bank, s6e63m0->cs_num, 0);
-}
-
-void cs_high(void)
-{
-       gpio_set_value(s6e63m0->cs_bank, s6e63m0->cs_num, 1);
-}
-
-void clk_low(void)
-{
-       gpio_set_value(s6e63m0->clk_bank, s6e63m0->clk_num, 0);
-}
-
-void clk_high(void)
-{
-       gpio_set_value(s6e63m0->clk_bank, s6e63m0->clk_num, 1);
-}
-
-void si_low(void)
-{
-       gpio_set_value(s6e63m0->si_bank, s6e63m0->si_num, 0);
-}
-
-void si_high(void)
-{
-       gpio_set_value(s6e63m0->si_bank, s6e63m0->si_num, 1);
-}
-
-char so_read(void)
-{
-       return gpio_get_value(s6e63m0->so_bank, s6e63m0->so_num);
-}
-
 static const unsigned char SEQ_PANEL_CONDITION_SET[] = {
        0xF8, 0x01,
        DATA_ONLY, 0x27,
@@ -365,112 +329,13 @@ static const unsigned char SEQ_DISPLAY_ON[] = {
        0x29, COMMAND_ONLY,
 };
 
-unsigned char DELAY=1;
-
-static void s6e63m0_c110_spi_write_byte(unsigned char address, unsigned char command)
-{
-       int     j;
-       unsigned short data;
-
-       data = (address << 8) + command;
-
-       cs_high();
-       si_high();
-       clk_high();
-       udelay(DELAY);
-
-       cs_low();
-       udelay(DELAY);
-
-       for (j = PACKET_LEN; j >= 0; j--)
-       {
-               clk_low();
-
-               /* data high or low */
-               if ((data >> j) & 0x0001)
-                       si_high();
-               else
-                       si_low();
-
-               udelay(DELAY);
-
-               clk_high();
-               udelay(DELAY);
-       }
-
-       cs_high();
-       udelay(DELAY);
-}
-
-#ifdef UNUSED_FUNCTION
-static unsigned char s6e63m0_c110_spi_read_byte(unsigned char select, unsigned char address)
-{
-       int     j;
-       static unsigned int first = 1;
-       unsigned char DELAY=1;
-       unsigned short data = 0;
-       char command = 0;
-
-       data = (select << 8) + address;
-
-       cs_high();
-       si_high();
-       clk_high();
-       udelay(DELAY);
-
-       clk_low();
-       udelay(DELAY);
-
-       for (j = PACKET_LEN + 8; j >= 0; j--)
-       {
-
-               if (j > 7) {
-                       clk_low();
-
-                       /* data high or low */
-                       if ((data >> (j - 8)) & 0x0001)
-                               si_high();
-                       else
-                               si_low();
-
-                       udelay(DELAY);
-                       clk_high();
-               } else {
-                       if (first) {
-                               gpio_cfg_pin(s6e63m0->so_bank, s6e63m0->so_num, GPIO_INPUT);
-                               first = 0;
-                       }
-
-                       clk_low();
-
-                       if (so_read() & 0x1)
-                               command |= 1 << j;
-                       else
-                               command |= 0 << j;
-
-                       udelay(DELAY);
-                       clk_high();
-               }
-
-               udelay(DELAY);
-       }
-
-       cs_high();
-       udelay(DELAY);
-
-       gpio_cfg_pin(s6e63m0->so_bank, s6e63m0->so_num, GPIO_OUTPUT);
-
-       return command;
-}
-#endif
-
 static void s6e63m0_spi_write(unsigned char address, unsigned char command)
 {
        if (address != DATA_ONLY)
-               s6e63m0_c110_spi_write_byte(0x0, address);
+               spi_write_byte(s6e63m0, 0x0, address);
 
        if (command != COMMAND_ONLY)
-               s6e63m0_c110_spi_write_byte(0x1, command);
+               spi_write_byte(s6e63m0, 0x1, command);
 }
 
 static void s6e63m0_panel_send_sequence(const unsigned char *wbuf, unsigned size_cmd)