aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2012-08-13 05:56:49 -0400
committerArchit Taneja <archit@ti.com>2012-08-16 08:30:54 -0400
commitb02875be08fd2ca7a195154c9f1c538508ca0d5a (patch)
tree65d9ea0d7f7c0a171e4e89c8ae7c9e10cccb0f79
parent02c3960b1eeafd5ed30323e1bb86bfa099b46921 (diff)
OMAPDSS: RFBI: Maintain copy of pixel size in driver data
The RFBI driver currently relies on the omap_dss_device struct to receive the desired pixel size of the panel. This makes the RFBI interface driver dependent on the omap_dss_device struct. Make the RFBI driver data maintain it's own pixel format field. A panel driver is expected to call omapdss_rfbi_set_pixel_size() to configure the pixel format before enabling the interface or calling omap_rfbi_configure(). Signed-off-by: Archit Taneja <archit@ti.com>
-rw-r--r--drivers/video/omap2/displays/panel-n8x0.c9
-rw-r--r--drivers/video/omap2/dss/rfbi.c20
-rw-r--r--include/video/omapdss.h5
3 files changed, 23 insertions, 11 deletions
diff --git a/drivers/video/omap2/displays/panel-n8x0.c b/drivers/video/omap2/displays/panel-n8x0.c
index 839ef84bb3d6..9565958ebaa9 100644
--- a/drivers/video/omap2/displays/panel-n8x0.c
+++ b/drivers/video/omap2/displays/panel-n8x0.c
@@ -150,11 +150,15 @@ static void blizzard_ctrl_setup_update(struct omap_dss_device *dssdev,
150 BLIZZARD_SRC_WRITE_LCD : 150 BLIZZARD_SRC_WRITE_LCD :
151 BLIZZARD_SRC_WRITE_LCD_DESTRUCTIVE; 151 BLIZZARD_SRC_WRITE_LCD_DESTRUCTIVE;
152 152
153 omap_rfbi_configure(dssdev, 16, 8); 153 omapdss_rfbi_set_pixel_size(dssdev, 16);
154
155 omap_rfbi_configure(dssdev, 8);
154 156
155 blizzard_write(BLIZZARD_INPUT_WIN_X_START_0, tmp, 18); 157 blizzard_write(BLIZZARD_INPUT_WIN_X_START_0, tmp, 18);
156 158
157 omap_rfbi_configure(dssdev, 16, 16); 159 omapdss_rfbi_set_pixel_size(dssdev, 16);
160
161 omap_rfbi_configure(dssdev, 16);
158} 162}
159 163
160static void mipid_transfer(struct spi_device *spi, int cmd, const u8 *wbuf, 164static void mipid_transfer(struct spi_device *spi, int cmd, const u8 *wbuf,
@@ -299,6 +303,7 @@ static int n8x0_panel_power_on(struct omap_dss_device *dssdev)
299 303
300 omapdss_rfbi_set_size(dssdev, dssdev->panel.timings.x_res, 304 omapdss_rfbi_set_size(dssdev, dssdev->panel.timings.x_res,
301 dssdev->panel.timings.y_res); 305 dssdev->panel.timings.y_res);
306 omapdss_rfbi_set_pixel_size(dssdev, dssdev->ctrl.pixel_size);
302 307
303 r = omapdss_rfbi_display_enable(dssdev); 308 r = omapdss_rfbi_display_enable(dssdev);
304 if (r) 309 if (r)
diff --git a/drivers/video/omap2/dss/rfbi.c b/drivers/video/omap2/dss/rfbi.c
index 40abee72aaee..98c65223789e 100644
--- a/drivers/video/omap2/dss/rfbi.c
+++ b/drivers/video/omap2/dss/rfbi.c
@@ -113,6 +113,7 @@ static struct {
113 struct semaphore bus_lock; 113 struct semaphore bus_lock;
114 114
115 struct omap_video_timings timings; 115 struct omap_video_timings timings;
116 int pixel_size;
116} rfbi; 117} rfbi;
117 118
118static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val) 119static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val)
@@ -764,10 +765,10 @@ static int rfbi_configure(int rfbi_module, int bpp, int lines)
764 return 0; 765 return 0;
765} 766}
766 767
767int omap_rfbi_configure(struct omap_dss_device *dssdev, int pixel_size, 768int omap_rfbi_configure(struct omap_dss_device *dssdev, int data_lines)
768 int data_lines)
769{ 769{
770 return rfbi_configure(dssdev->phy.rfbi.channel, pixel_size, data_lines); 770 return rfbi_configure(dssdev->phy.rfbi.channel, rfbi.pixel_size,
771 data_lines);
771} 772}
772EXPORT_SYMBOL(omap_rfbi_configure); 773EXPORT_SYMBOL(omap_rfbi_configure);
773 774
@@ -785,6 +786,12 @@ void omapdss_rfbi_set_size(struct omap_dss_device *dssdev, u16 w, u16 h)
785} 786}
786EXPORT_SYMBOL(omapdss_rfbi_set_size); 787EXPORT_SYMBOL(omapdss_rfbi_set_size);
787 788
789void omapdss_rfbi_set_pixel_size(struct omap_dss_device *dssdev, int pixel_size)
790{
791 rfbi.pixel_size = pixel_size;
792}
793EXPORT_SYMBOL(omapdss_rfbi_set_pixel_size);
794
788static void rfbi_dump_regs(struct seq_file *s) 795static void rfbi_dump_regs(struct seq_file *s)
789{ 796{
790#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, rfbi_read_reg(r)) 797#define DUMPREG(r) seq_printf(s, "%-35s %08x\n", #r, rfbi_read_reg(r))
@@ -835,7 +842,7 @@ static void rfbi_config_lcd_manager(struct omap_dss_device *dssdev)
835 /* Do we need fifohandcheck for RFBI? */ 842 /* Do we need fifohandcheck for RFBI? */
836 mgr_config.fifohandcheck = false; 843 mgr_config.fifohandcheck = false;
837 844
838 mgr_config.video_port_width = dssdev->ctrl.pixel_size; 845 mgr_config.video_port_width = rfbi.pixel_size;
839 mgr_config.lcden_sig_polarity = 0; 846 mgr_config.lcden_sig_polarity = 0;
840 847
841 dss_mgr_set_lcd_config(dssdev->manager, &mgr_config); 848 dss_mgr_set_lcd_config(dssdev->manager, &mgr_config);
@@ -890,9 +897,8 @@ int omapdss_rfbi_display_enable(struct omap_dss_device *dssdev)
890 897
891 rfbi_config_lcd_manager(dssdev); 898 rfbi_config_lcd_manager(dssdev);
892 899
893 rfbi_configure(dssdev->phy.rfbi.channel, 900 rfbi_configure(dssdev->phy.rfbi.channel, rfbi.pixel_size,
894 dssdev->ctrl.pixel_size, 901 dssdev->phy.rfbi.data_lines);
895 dssdev->phy.rfbi.data_lines);
896 902
897 rfbi_set_timings(dssdev->phy.rfbi.channel, 903 rfbi_set_timings(dssdev->phy.rfbi.channel,
898 &dssdev->ctrl.rfbi_timings); 904 &dssdev->ctrl.rfbi_timings);
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index cc7bfb05dcad..d03244a59db4 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -753,8 +753,9 @@ int omapdss_rfbi_display_enable(struct omap_dss_device *dssdev);
753void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev); 753void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev);
754int omap_rfbi_update(struct omap_dss_device *dssdev, void (*callback)(void *), 754int omap_rfbi_update(struct omap_dss_device *dssdev, void (*callback)(void *),
755 void *data); 755 void *data);
756int omap_rfbi_configure(struct omap_dss_device *dssdev, int pixel_size, 756int omap_rfbi_configure(struct omap_dss_device *dssdev, int data_lines);
757 int data_lines);
758void omapdss_rfbi_set_size(struct omap_dss_device *dssdev, u16 w, u16 h); 757void omapdss_rfbi_set_size(struct omap_dss_device *dssdev, u16 w, u16 h);
758void omapdss_rfbi_set_pixel_size(struct omap_dss_device *dssdev,
759 int pixel_size);
759 760
760#endif 761#endif