diff options
author | Archit Taneja <archit@ti.com> | 2012-08-13 05:56:49 -0400 |
---|---|---|
committer | Archit Taneja <archit@ti.com> | 2012-08-16 08:30:54 -0400 |
commit | b02875be08fd2ca7a195154c9f1c538508ca0d5a (patch) | |
tree | 65d9ea0d7f7c0a171e4e89c8ae7c9e10cccb0f79 | |
parent | 02c3960b1eeafd5ed30323e1bb86bfa099b46921 (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.c | 9 | ||||
-rw-r--r-- | drivers/video/omap2/dss/rfbi.c | 20 | ||||
-rw-r--r-- | include/video/omapdss.h | 5 |
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 | ||
160 | static void mipid_transfer(struct spi_device *spi, int cmd, const u8 *wbuf, | 164 | static 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 | ||
118 | static inline void rfbi_write_reg(const struct rfbi_reg idx, u32 val) | 119 | static 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 | ||
767 | int omap_rfbi_configure(struct omap_dss_device *dssdev, int pixel_size, | 768 | int 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 | } |
772 | EXPORT_SYMBOL(omap_rfbi_configure); | 773 | EXPORT_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 | } |
786 | EXPORT_SYMBOL(omapdss_rfbi_set_size); | 787 | EXPORT_SYMBOL(omapdss_rfbi_set_size); |
787 | 788 | ||
789 | void omapdss_rfbi_set_pixel_size(struct omap_dss_device *dssdev, int pixel_size) | ||
790 | { | ||
791 | rfbi.pixel_size = pixel_size; | ||
792 | } | ||
793 | EXPORT_SYMBOL(omapdss_rfbi_set_pixel_size); | ||
794 | |||
788 | static void rfbi_dump_regs(struct seq_file *s) | 795 | static 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); | |||
753 | void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev); | 753 | void omapdss_rfbi_display_disable(struct omap_dss_device *dssdev); |
754 | int omap_rfbi_update(struct omap_dss_device *dssdev, void (*callback)(void *), | 754 | int omap_rfbi_update(struct omap_dss_device *dssdev, void (*callback)(void *), |
755 | void *data); | 755 | void *data); |
756 | int omap_rfbi_configure(struct omap_dss_device *dssdev, int pixel_size, | 756 | int omap_rfbi_configure(struct omap_dss_device *dssdev, int data_lines); |
757 | int data_lines); | ||
758 | void omapdss_rfbi_set_size(struct omap_dss_device *dssdev, u16 w, u16 h); | 757 | void omapdss_rfbi_set_size(struct omap_dss_device *dssdev, u16 w, u16 h); |
758 | void omapdss_rfbi_set_pixel_size(struct omap_dss_device *dssdev, | ||
759 | int pixel_size); | ||
759 | 760 | ||
760 | #endif | 761 | #endif |