pandora-kernel.git
12 years agoOMAP4: 4430SDP: Add picodlp support to board file
Tomi Valkeinen [Wed, 3 Aug 2011 11:39:09 +0000 (14:39 +0300)]
OMAP4: 4430SDP: Add picodlp support to board file

An on-board projector named picodlp is available for OMAP4430 SDP.

Entry for this picodlp as a panel is being added in dss_devices array to
the board file.  It needs 4 GPIO pins for interfacing with host
processor and these are defined and two of them are configured in board
file.  Two GPIOs power_on and display_select are configured here.
picodlp also needs an i2c client over i2c controller-2 at address 0x1b.

Signed-off-by: Mayuresh Janorkar <mayur@ti.com>
Signed-off-by: Mythri P K <mythripk@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: 4430SDP: Add panel support to board file
Tomi Valkeinen [Tue, 6 Sep 2011 08:31:02 +0000 (11:31 +0300)]
OMAP4: 4430SDP: Add panel support to board file

4430SDP has two Taal DSI panels, connected to DSI 1 and DSI 2 modules.
The panels use a common PWM backlight, which will be implemented later
when the PWM driver has been improved to support the backlight.

Until the PWM driver has been improved, the following hack added to
arch/arm/mach-omap2/board-4430sdp.c can be used to set the backlight to
max:

static int omap_4430sdp_hack_backlight(void)
{
       twl_i2c_write_u8(TWL_MODULE_PWM, 0x7f, LED_PWM2OFF);
       twl_i2c_write_u8(TWL_MODULE_PWM, 0x7f, LED_PWM2ON);
       twl_i2c_write_u8(TWL6030_MODULE_ID1, 0x30, TWL6030_TOGGLE3);
       return 0;
}
late_initcall(omap_4430sdp_hack_backlight);

Signed-off-by: Archit Taneja <archit@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: 4430SDP: Remove unneeded lcd config
Tomi Valkeinen [Tue, 20 Sep 2011 06:11:00 +0000 (09:11 +0300)]
OMAP: 4430SDP: Remove unneeded lcd config

4430SDP board file contains some unused old LCD configurations. They are
not used and can be removed.

Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: remove vaddr from overlay info
Tomi Valkeinen [Mon, 26 Sep 2011 16:16:59 +0000 (19:16 +0300)]
OMAPDSS: remove vaddr from overlay info

overlay_info struct, used to configure overlays, currently includes both
physical and virtual addresses for the pixels. The vaddr was added to
support more exotic configurations where CPU would be used to update a
display, but it is not currently used and there has been no interest in
the feature. Using CPU to update a screen is also less interesting now
that OMAP4 has two LCD outputs.

This patch removes the vaddr field, and modifies the users of omapdss
accordingly. This makes the use of omapdss a bit simpler, as the user
doesn't need to think if it needs to give the vaddr.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: Add support to dump registers through debugfs
Mythri P K [Thu, 22 Sep 2011 08:07:45 +0000 (13:37 +0530)]
OMAPDSS: HDMI: Add support to dump registers through debugfs

Add support to dump the HDMI wrapper, core, PLL and PHY registers
through debugfs.

Signed-off-by: Mythri P K <mythripk@ti.com>
[tomi.valkeinen@ti.com: updated the description]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: Add missing register definitions
Mythri P K [Thu, 22 Sep 2011 08:07:44 +0000 (13:37 +0530)]
OMAPDSS: HDMI: Add missing register definitions

Add some of the missing register definitions, which are h/w indexable.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: Replace hdmi_reg struct with u16
Mythri P K [Thu, 22 Sep 2011 08:07:43 +0000 (13:37 +0530)]
OMAPDSS: HDMI: Replace hdmi_reg struct with u16

Remove usage of hdmi_reg struct to use u16 instead in the HDMI IP header
file. hdmi_reg struct is not really needed, and the same change was also
made for dispc earlier.

Signed-off-by: Mythri P K <mythripk@ti.com>
[tomi.valkeinen@ti.com: updated the description]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: HDMI: Move the comments in avi infoframe
Mythri P K [Thu, 22 Sep 2011 08:07:42 +0000 (13:37 +0530)]
OMAPDSS: HDMI: Move the comments in avi infoframe

Move the comments in AVI infoframe structure above each parameter
to align with other comments in the header file.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Add N800 panel driver
Tomi Valkeinen [Thu, 21 Apr 2011 16:53:59 +0000 (19:53 +0300)]
OMAPDSS: Add N800 panel driver

This is a driver for N800's display, ported from the old omapfb. This is
a slightly lighter version of the driver as not all features of the old
driver can be ported without big changes to DSS2, and also because some
of the HW features used in the old driver are unclear (e.g. the power
management part).

That said, the new driver works fine for basic use.

Architecturally the driver is not as neat as it could be. N800's display
HW consists of a display buffer chip and a panel, and ideally they would
be represented by separate, independent drivers. This is not currently
possible, and this driver contains both buffer chip and panel driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Port the Apollon display driver to DSS2
Tomi Valkeinen [Wed, 20 Apr 2011 07:47:28 +0000 (10:47 +0300)]
OMAPDSS: Port the Apollon display driver to DSS2

Port the old omapfb panel driver for Apollon to DSS2.

Cc: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Port the H4 display driver to DSS2
Tomi Valkeinen [Tue, 19 Apr 2011 16:59:58 +0000 (19:59 +0300)]
OMAPDSS: Port the H4 display driver to DSS2

Port the old omapfb panel driver for H4 to DSS2.

Cc: Imre Deak <imre.deak@nokia.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Port 2430sdp display driver to DSS2
Tomi Valkeinen [Tue, 19 Apr 2011 16:23:05 +0000 (19:23 +0300)]
OMAPDSS: Port 2430sdp display driver to DSS2

Port the old omapfb panel driver for 2430SDP to DSS2.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: Remove unused lcd drivers
Tomi Valkeinen [Tue, 19 Apr 2011 16:30:04 +0000 (19:30 +0300)]
OMAPFB: Remove unused lcd drivers

drivers/video/omap/ contains some lcd drivers which are not used by any
board. They can be removed.

Cc: Arun C <arunedarath@mistralsolutions.com>
Acked-by: Koen Kooi <koen@openembedded.org>
Acked-by: Steve Sakoman <steve@sakoman.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: Taal: remove external backlight support
Tomi Valkeinen [Tue, 9 Aug 2011 08:39:27 +0000 (11:39 +0300)]
OMAPDSS: Taal: remove external backlight support

Taal panel driver supports two kinds of backlight control: 1) using DSI
commands sent to the panel to control the backlight, 2) calling function
pointers going to the board file to control the backlight.

The second option is a bit hacky, and will no longer be needed when the
PWM driver supports the backlight features. After that we can use the
standard PWM backlight driver.

This patch removes the second backlight control mechanism, and adds a
boolean field, use_dsi_backlight, to nokia_dsi_panel_data which the
board file can use to inform whether the panel driver should use DSI
commands to control the backlight.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: FEATURES: Create a range param to get max downscaling
Archit Taneja [Thu, 8 Sep 2011 07:55:17 +0000 (13:25 +0530)]
OMAPDSS: FEATURES: Create a range param to get max downscaling

Create a dss_range_param member called FEAT_PARAM_DOWNSCALE to get the maximum
downscaling possible on the current platform. Use this in
dispc_ovl_calc_scaling().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Clean up scaling related clock and five tap calculations
Archit Taneja [Thu, 8 Sep 2011 07:45:11 +0000 (13:15 +0530)]
OMAPDSS: DISPC: Clean up scaling related clock and five tap calculations

Move DISPC scaling related code from dispc_ovl_setup() to a new function
dispc_ovl_calc_scaling(). Use overlay caps to check if the overlay can scale or
not. No functional changes are made.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Remove hardcoded use of PPL in five tap clock calculation
Archit Taneja [Thu, 8 Sep 2011 07:21:10 +0000 (12:51 +0530)]
OMAPDSS: DISPC: Remove hardcoded use of PPL in five tap clock calculation

The function calc_fclk_five_taps() uses a fixed value of pixels per line which
is used in calculations to get the minimum fclk needed for scaling with five
taps to work.

Remove this by providing the width of the panel connected to the manager.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Get correct pixel clock for TV manager
Archit Taneja [Tue, 13 Sep 2011 12:58:41 +0000 (18:28 +0530)]
OMAPDSS: DISPC: Get correct pixel clock for TV manager

dispc_mgr_pclk_rate() is used to calculate minimum required functional clock for
scaling in calc_fclk() and calc_fclk_five_taps(). This function returns the
correct pixel clock for LCD and LCD2 managers, but not for TV manager. Extend
this function so that it gets the correct pixel clock for TV manager.

This also prevents the crash we get when we try to scale overlays connected to
TV manager. The current code leads to a BUG() being executed if we call
dispc_mgr_pclk_rate() for the TV manager.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Create helper function dispc_mgr_is_lcd()
Archit Taneja [Thu, 8 Sep 2011 07:00:19 +0000 (12:30 +0530)]
OMAPDSS: DISPC: Create helper function dispc_mgr_is_lcd()

Create a helper function called dispc_mgr_is_lcd() which returns true if the
manager is LCD or LCD2.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Pass overlay params as arguments to dispc_ovl_setup()
Archit Taneja [Wed, 14 Sep 2011 06:22:54 +0000 (11:52 +0530)]
OMAPDSS: DISPC: Pass overlay params as arguments to dispc_ovl_setup()

dispc_ovl_enable_replication() and dispc_ovl_set_fifo_threshold() are currently
called in configure_overlay(). These are the only functions which cause DISPC
register writes of overlay parameters outside of dispc_ovl_setup().

Move these to dispc_ovl_setup() and pass replication, fifo_low and fifo_high
thresholds as arguments to dispc_ovl_setup() in order to be aligned with other
overlay parameters. No functional changes are made.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPDSS: DISPC: Reduce the number of arguments in dispc_ovl_setup()
Archit Taneja [Wed, 14 Sep 2011 05:40:10 +0000 (11:10 +0530)]
OMAPDSS: DISPC: Reduce the number of arguments in dispc_ovl_setup()

dispc_ovl_setup() currently takes a large number of overlay arguments, most of
these are members of the overlay_info struct. Replace these arguments by
passing a overlay_info pointer instead.

In configure_overlay(), we create an overlay_info struct called new_oi, this is
a copy of the overlay cache's overlay_info member. Update the new_oi parameters
which could have been possibly changed in configure_overlay(). Pass its pointer
pointer to dispc_ovl_setup().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: find best mode from edid
Tomi Valkeinen [Thu, 25 Aug 2011 14:15:14 +0000 (17:15 +0300)]
OMAPFB: find best mode from edid

Use the new read_edid() function to get EDID information from the
display (when available), and use the information to use a suitable mode
at initialization time.

Hot-plug is not yet supported, so the timings selected at init time will
stay even if the monitor would be changed.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: Add DDC i2c_bus_num to board files
Tomi Valkeinen [Mon, 29 Aug 2011 14:48:19 +0000 (17:48 +0300)]
OMAP: Add DDC i2c_bus_num to board files

Add i2c bus number for DVI output for boards with DVI output where the
i2c bus has been confirmed to be connected and working. The driver uses
this to detect if a panel is connected and to read EDID.

Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: panel-generic-dpi: remove "generic" panel
Tomi Valkeinen [Fri, 9 Sep 2011 14:35:14 +0000 (17:35 +0300)]
OMAP: DSS2: panel-generic-dpi: remove "generic" panel

Remove the "generic" panel config entry, which is not used.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: stalker: Remove LCD device from board file
Tomi Valkeinen [Fri, 9 Sep 2011 14:25:13 +0000 (17:25 +0300)]
OMAP: stalker: Remove LCD device from board file

OMAP3 Stalker board has definitions for LCD, but uses the generic driver
without any information what kind of LCD it has. The board should use a
particular panel type from panel-generic-dpi driver, not the generic
one.

As I haven't gotten response the signer-off of stalker board about the
issue, this patch removes the LCD support from the board file. This will
allow us to clean up the panel-generic-dpi driver and make it support
only fixed size panels.

CC: Jason Lam <lzg@ema-tech.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: use dvi panel driver instead of generic-dpi
Tomi Valkeinen [Thu, 1 Sep 2011 07:13:04 +0000 (10:13 +0300)]
OMAP: use dvi panel driver instead of generic-dpi

Multiple OMAP3/4 boards have a DVI framer output. This patch makes the
boards use the new panel-dvi driver, instead of the panel-generic-dpi
driver.

Separate drivers for fixed size panels and DVI framer gives us cleaner
driver code.

Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: add panel-dvi driver
Tomi Valkeinen [Thu, 1 Sep 2011 06:17:41 +0000 (09:17 +0300)]
OMAP: DSS2: add panel-dvi driver

We have currently panel-generic-dpi driver, which is a combined driver
for dummy panels and also for DVI output.

The aim is to split the panel-generic-dpi into two, one for fixed size
dummy panels connected via DPI, and the other (this) for variable
resolution output which supports DDC channel (in practice a DVI framer
chip connected to DPI output).

Original i2c code by: Ricardo Salveti de Araujo
<ricardo.salveti@canonical.com>

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: implement detect()
Tomi Valkeinen [Mon, 29 Aug 2011 15:10:20 +0000 (18:10 +0300)]
OMAP: DSS2: HDMI: implement detect()

Implement detect() by checking the hot plug detect status.

The implementation is not very good, as it always turns on the HDMI
output to get the detection working. HDMI driver needs improvements so
that we could enable only core parts of it.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: remove error prints in check_timings
Tomi Valkeinen [Thu, 25 Aug 2011 14:13:32 +0000 (17:13 +0300)]
OMAP: DSS2: HDMI: remove error prints in check_timings

check_timings() is supposed to be used to verify if timings are ok or
not. Currently the HDMI driver prints error messages if the timings are
not ok. This is not right, as it is no error to give invalid timings to
check_timings().

Remove the error prints.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: clean up edid reading & fix checksum
Tomi Valkeinen [Wed, 31 Aug 2011 08:12:40 +0000 (11:12 +0300)]
OMAP: DSS2: HDMI: clean up edid reading & fix checksum

Clean up reading of EDID by passing direct address to the block being
read, instead of start address of the whole EDID memory area. Rewrite
the loop which reads the EDID.

This also fixes the checksum calculation, which used to calculate the
checksum only for the first block.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: split hdmi_core_ddc_edid
Tomi Valkeinen [Mon, 22 Aug 2011 14:47:56 +0000 (17:47 +0300)]
OMAP: DSS2: HDMI: split hdmi_core_ddc_edid

Split the DDC initialization off from hdmi_core_ddc_edid() into a
separate function hdmi_core_ddc_init(). This cleans up the
implementation.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: remove edid parsing
Tomi Valkeinen [Thu, 25 Aug 2011 14:07:58 +0000 (17:07 +0300)]
OMAP: DSS2: HDMI: remove edid parsing

OMAPFB handles EDID parsing now, using the common helper functions in
fbdev. We can remove the EDID parsing from HDMI driver.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: implement read_edid()
Tomi Valkeinen [Thu, 25 Aug 2011 14:12:56 +0000 (17:12 +0300)]
OMAP: DSS2: HDMI: implement read_edid()

Implement read_edid() for HDMI by implementing necessary functions to
hdmi.c and to hdmi_omap4_panel.c.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: make set_timing saner
Tomi Valkeinen [Mon, 22 Aug 2011 11:57:33 +0000 (14:57 +0300)]
OMAP: DSS2: HDMI: make set_timing saner

Currently the set_timings code for hdmi is quite strange. The display is
disabled in hdmi_omap4_panel.c before setting timings, and enabled in
hdmi.c after setting the timings. Furthermore, the timings were not
permanent, and disabling and enabling the display would lose them.

This patch makes the set_timings handling a bit better.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: add detect() to omap_dss_driver struct
Tomi Valkeinen [Mon, 29 Aug 2011 14:26:01 +0000 (17:26 +0300)]
OMAP: DSS2: add detect() to omap_dss_driver struct

detect() can be used to probe if the display is connected.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: add read_edid() to omap_dss_driver struct
Tomi Valkeinen [Thu, 25 Aug 2011 14:10:41 +0000 (17:10 +0300)]
OMAP: DSS2: add read_edid() to omap_dss_driver struct

read_edid() can be used to get the EDID information from the display.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: improve hdmi output enable
Tomi Valkeinen [Wed, 31 Aug 2011 11:47:11 +0000 (14:47 +0300)]
OMAP: DSS2: HDMI: improve hdmi output enable

Enabling HDMI output often causes sync lost errors, and almost always
causes timeout errors being printed from dispc_mgr_enable_digit_out().

The sync lost problem seems to go lessen greatly if we first enable the
HDMI output, and only then enable the DISPC output. However, as this is
only based on observations, the fix may not be perfect as the problem
may lie somewhere else. Nevertheless, HDMI works better with this patch.

This will also fix the dispc's dispc_mgr_enable_digit_out(), as the code
waits for two VSYNCs after enabling the output. If the HDMI output is
disabled (as it was previously), there are no VSYNCs and
dispc_mgr_enable_digit_out() will print timeout errors.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: improve dispc_mgr_enable_digit_out()
Tomi Valkeinen [Wed, 31 Aug 2011 11:42:49 +0000 (14:42 +0300)]
OMAP: DSS2: DISPC: improve dispc_mgr_enable_digit_out()

dispc_mgr_enable_digit_out() didn't handle HDMI case very well.

Improve the function to use FRAMEDONETV interrupt to see when HDMI has
been disabled.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: add dss_get_hdmi_venc_clk_source()
Tomi Valkeinen [Wed, 31 Aug 2011 11:33:31 +0000 (14:33 +0300)]
OMAP: DSS2: add dss_get_hdmi_venc_clk_source()

Add dss_get_hdmi_venc_clk_source(), which can be used to get the value
programmed with dss_select_hdmi_venc_clk_source(). This can be used to
find out if the digit output is going to VENC or HDMI.

For OMAP2/3 dss_get_hdmi_venc_clk_source() always returns
DSS_VENC_TV_CLK.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: Add missing IRQ definitions
Tomi Valkeinen [Wed, 31 Aug 2011 10:39:03 +0000 (13:39 +0300)]
OMAP: DSS2: DISPC: Add missing IRQ  definitions

Add IRQ definitions for missing OMAP4 IRQs: FRAMEDONEWB, FRAMEDONETV,
WBBUFFEROVERFLOW.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Add comment about regn
Tomi Valkeinen [Wed, 31 Aug 2011 12:32:23 +0000 (15:32 +0300)]
OMAP: DSS2: DSI: Add comment about regn

regn divider is one greater than the REGN divider in TRM. Add a comment
to point this out.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: change regn definition
Tomi Valkeinen [Mon, 22 Aug 2011 10:16:24 +0000 (13:16 +0300)]
OMAP: DSS2: HDMI: change regn definition

regn divider is currently programmed to the registers without change,
but when calculating clock frequencies it is used as regn+1.

To make this similar to how DSI handles the dividers this patch changes
the regn value to be used as such for calculations, but the value
programmed to registers is regn-1.

This simplifies the clock frequency calculations, makes it similar to
DSI, and also allows us to use regn value 0 as undefined.

Cc: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: HDMI: use default dividers
Tomi Valkeinen [Mon, 22 Aug 2011 10:02:52 +0000 (13:02 +0300)]
OMAP: DSS2: HDMI: use default dividers

Use default regn and regm2 dividers in the hdmi driver if the board file
does not define them.

Cc: Mythri P K <mythripk@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: Fix minimum PCD value
Tomi Valkeinen [Mon, 29 Aug 2011 12:56:04 +0000 (15:56 +0300)]
OMAP: DSS2: DISPC: Fix minimum PCD value

The current driver had a hardcoded minimum value of 2 for pixel clock
divisor (PCD). This doesn't seem to be right.

OMAP4 TRM says that PCD can be 1 when not downscaling, and inverted
pixel clock (IPC) is off.

OMAP3 TRM says the same, but also in the register descriptions that PCD
value 1 is invalid.

OMAP2 TRM says PCD 2 is the minimum.

OMAP2 is still untested, but for both OMAP3 and OMAP4 PCD of 1 seems to
work fine.

This patch adds a new DSS feature, FEAT_PARAM_DSS_PCD, which is used to
find the minimum and maximum PCD. The minimum is set to 2 for OMAP2, and
1 for OMAP3/4.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: Rename hdmi_omap4_panel.c to hdmi_panel.c
Mythri P K [Thu, 8 Sep 2011 13:36:27 +0000 (19:06 +0530)]
OMAP4: DSS2: Rename hdmi_omap4_panel.c to hdmi_panel.c

As the panel driver will remain generic across OMAP's renaming it to
hdmi_panel.c

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Function pointer approach to call
Mythri P K [Thu, 8 Sep 2011 13:36:26 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Function pointer approach to call

HDMI IP fundamentally has replaceable core PHY and PLL blocks.
These blocks might vary across OMAP's but the end functionality such as to
enable or disable PLL, PHY, function to read EDID would remain the same.

Thus to make the current hdmi DSS driver compatible with different OMAP's having
different IP blocks( A combination of different core, PHY, PLL blocks), function
pointer approach is introduced.

With function pointer, relevant IP dependent functions are mapped to the generic
functions used by DSS during the initialization based on the OMAP compiled.
Thus making hdmi DSS driver IP agnostic.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Rename the functions in HDMI IP library
Mythri P K [Thu, 8 Sep 2011 13:36:25 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Rename the functions in HDMI IP library

Functions that are included in HDMI IP driver is renamed to have
IP specific names so that it will not conflict with similar functions
from other IP.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Move the HDMI IP dependent audio
Mythri P K [Thu, 8 Sep 2011 13:36:24 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Move the HDMI IP dependent audio

Move HDMI IP dependent audio functions from HDMI DSS file  to IP library.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Split the current HDMI driver to move
Mythri P K [Thu, 8 Sep 2011 13:36:23 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Split the current HDMI driver to move

Split the current HDMI driver to move the HDMI IP dependent ( PLL/PHY/Core
configuration code) to a new IP file (ti_hdmi_4xxx_ip.c.
This is to separate IP dependent OMAP agnostic code from OMAP specific DSS
dependent code.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Move the EDID definition from HDMI
Mythri P K [Thu, 8 Sep 2011 13:36:22 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Move the EDID definition from HDMI

Clean up to move the EDID definition from the IP dependent header file to hdmi.c

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Move HDMI IP independent generic header
Mythri P K [Thu, 8 Sep 2011 13:36:21 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Move HDMI IP independent generic header

Some of the header file definitions that are there in the hdmi.h are generic
and can be used across OMAP's, Thus moving generic definition to new file.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Use specific HDMI timings structure
Mythri P K [Thu, 8 Sep 2011 13:36:20 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Use specific HDMI timings structure

As hdmi has few additional parameters such as vsync and hsync
polarity which is missing in DSS timing structure, define HDMI timings
structure for hdmi to use instead of OMAP DSS timing structure.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: Move pll and video configuration
Mythri P K [Thu, 8 Sep 2011 13:36:19 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: Move pll and video configuration

As the pll and the video configuration info are part of the ip_data, pll
and video structures are moved to the ip_data structure. Also the pll and
video configuration functions are modified accordingly to take care of the
structure movement.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: DSS2: HDMI: HDMI clean up to pass base_address
Mythri P K [Thu, 8 Sep 2011 13:36:18 +0000 (19:06 +0530)]
OMAP4: DSS2: HDMI: HDMI clean up to pass base_address

As the base_address of the HDMI might differ across SoC's, offset of the HDMI
logical blocks(PHY, PLL and Core) and base address procured from the platform
data are passed dynamically to the functions that modify HDMI IP registers.

Signed-off-by: Mythri P K <mythripk@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI Video mode support
Archit Taneja [Mon, 5 Sep 2011 11:18:27 +0000 (16:48 +0530)]
OMAP: DSS2: DSI Video mode support

Add initial support for DSI video mode panels:
- Add a new structure omap_dss_dsi_videomode_data in the member "panel" in
  omap_dss_device struct. This allows panel driver to configure dsi video_mode
  specific parameters.
- Configure basic DSI video mode timing parameters: HBP, HFP, HSA, VBP, VFP, VSA,
  TL and VACT.
- Configure DSI protocol engine registers for video_mode support.
- Introduce functions dsi_video_mode_enable() and dsi_video_mode_disable() which
  enable/disable video mode for a given virtual channel and a given pixel format
  type.

Things left for later
- Add functions to check for errors in video mode timings provided by panel.
- Configure timing registers required  for command mode interleaving.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Send zero length packet in dsi_vc_send_null()
Archit Taneja [Mon, 5 Sep 2011 11:31:08 +0000 (17:01 +0530)]
OMAP: DSS2: DSI: Send zero length packet in dsi_vc_send_null()

dsi_vc_send_null() currently sends a long packet with data type
MIPI_DSI_NULL_PACKET and packet length 4. Modify it to send a zero
length long packet. This leads to sending only the long packet header
and no payload packets and hence the transfer completes faster.

The function can be modified later if there is a need to send null
packets of a non-zero length.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Create an enum for DSI pixel formats
Archit Taneja [Thu, 8 Sep 2011 13:12:16 +0000 (18:42 +0530)]
OMAP: DSS2: Create an enum for DSI pixel formats

Currently, DSI pixel info is only represented by the pixel size in bits using
the pixel_size parameter in omap_dss_device struct's ctrl member.

This is not sufficient information for DSI video mode usage, as two of the
supported formats(RGB666 loosely packed, and RGB888) have the same pixel
container size, but different data_type values for the video mode packet header.

Create enum "omap_dss_dsi_pixel_format" which describes the pixel data format
the panel is configured for. Create helper function dsi_get_pixel_size() which
returns the pixel size of the given pixel format.

Modify functions omapdss_default_get_recommended_bpp() and dss_use_replication()
to use dsi_get_pixel_size().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Clean up stallmode and io pad mode selection
Archit Taneja [Mon, 22 Aug 2011 12:11:57 +0000 (17:41 +0530)]
OMAP: DSS2: Clean up stallmode and io pad mode selection

Split the function dispc_set_parallel_interface_mode() into 2 separate
functions called dispc_mgr_set_io_pad_mode() and dispc_mgr_enable_stallmode().
The current function tries to set 2 different modes(io pad mode and stall mode)
based on a parameter omap_parallel_interface_mode which loosely corresponds to
the panel interface type.

This isn't correct because a) these 2 modes are independent to some extent,
b) we are currently configuring gpout0/gpout1 for DSI panels which is
unnecessary, c) a DSI Video mode panel won't get configured correctly.

Splitting the functions allows the interface driver to set these modes
independently and hence allow more flexibility.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Introduce generic read functions
Archit Taneja [Tue, 30 Aug 2011 10:37:39 +0000 (16:07 +0530)]
OMAP: DSS2: DSI: Introduce generic read functions

Introduce read functions which use generic Processor-to-Peripheral
transaction types. These are needed by some devices which may not support
corresponding DCS commands.

Add function dsi_vc_generic_send_read_request() which can send
a short packet with 0, 1 or 2 bytes of request data and the corresponding
generic data type.

Rename function dsi_vc_dcs_read_rx_fifo() to dsi_vc_read_rx_fifo() and modify
it to take the enum "dss_dsi_content_type" as an argument to use either DCS
or GENERIC Peripheral-to-Processor transaction types while parsing data read
from the device.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Split dsi_vc_dcs_read() into 2 functions
Archit Taneja [Tue, 30 Aug 2011 10:18:23 +0000 (15:48 +0530)]
OMAP: DSS2: DSI: Split dsi_vc_dcs_read() into 2 functions

Split dsi_vc_dcs_read() into the functions:
- dsi_vc_dcs_send_read_request(): This is responsible for sending the short
packet command with the read request.
- dsi_vc_dcs_read_rx_fifo(): This parses the DSI RX fifo of the given virtual
channel, identifies the type of data received, and fills a buffer with the data
provided by the panel.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2()
Archit Taneja [Mon, 22 Aug 2011 09:14:27 +0000 (14:44 +0530)]
OMAP: DSS2: DSI: Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2()

Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2(), these are used
when the panel is expected to return 1 and 2 bytes respecitvely. This was manily
used for debugging purposes. These functions should be implemented in the panel
driver if needed.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Introduce generic write functions
Archit Taneja [Thu, 25 Aug 2011 13:05:58 +0000 (18:35 +0530)]
OMAP: DSS2: DSI: Introduce generic write functions

Intoduce enum "dss_dsi_content_type" to differentiate between DCS and generic
content types.

Introduce short and long packet write functions which use generic
Processor-to-Peripheral transaction types. These are needed by some devices
which may not support corresponding DCS commands. Create common write functions
which allow code reuse between DCS and generic write functions.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Create enum for DSI operation modes
Archit Taneja [Fri, 22 Jul 2011 07:15:04 +0000 (12:45 +0530)]
OMAP: DSS2: Create enum for DSI operation modes

Create an enum for DSI operation modes, use this to set the capabilities of the
device in dsi_init_display().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Represent L4 and VP as sources of VC instead of modes
Archit Taneja [Mon, 22 Aug 2011 06:28:08 +0000 (11:58 +0530)]
OMAP: DSS2: DSI: Represent L4 and VP as sources of VC instead of modes

The enum type dsi_vc_mode is a bit misleading as L4 slave port and video port
are sources to VC rather than the mode of operation. Rename then enum type and
its members. Merge dsi_vc_config_vp() and dsi_vc_config_l4() into a single
function called dsi_vc_config_source() which takes dsi_vc_source enum as an
extra argument.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Use MIPI DSI enums from include/video/mipi_display.h
Archit Taneja [Thu, 25 Aug 2011 12:55:03 +0000 (18:25 +0530)]
OMAP: DSS2: Use MIPI DSI enums from include/video/mipi_display.h

MIPI DSI Transaction types and DCS commands are currently defined as
macros in dsi.c and panel-taal.c, remove these and replace them with
enum members defined in include/video/mipi_display.h.

Signed-off-by: Archit Taneja <archit@ti.com>
[tomi.valkeinen@ti.com: reformatted the commit message]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: Devkit8000: Change lcd driver to AT070TN83
Thomas Weber [Thu, 1 Sep 2011 13:05:08 +0000 (15:05 +0200)]
OMAP: Devkit8000: Change lcd driver to AT070TN83

Change lcd driver from generic to AT070TN83.

Signed-off-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Support for Innolux AT070TN83
Thomas Weber [Thu, 1 Sep 2011 13:05:07 +0000 (15:05 +0200)]
OMAP: DSS2: Support for Innolux AT070TN83

Add support for Innolux AT070TN83, a 7 inch LCD
with RGB-Interface and touch panel to panel-generic-dpi.

Tested with Devkit8000.

Signed-off-by: Thomas Weber <weber@corscience.de>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: reorganize functions in dss.h
Tomi Valkeinen [Tue, 16 Aug 2011 10:49:15 +0000 (13:49 +0300)]
OMAP: DSS2: reorganize functions in dss.h

Group dispc's overlay and manager related functions.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: rename manager related funcs
Tomi Valkeinen [Tue, 16 Aug 2011 10:45:15 +0000 (13:45 +0300)]
OMAP: DSS2: DISPC: rename manager related funcs

Rename dispc's manager related functions as follows:

- Remove prepending underscores, which were originally used to inform
  that the clocks needs to be enabled. This meaning is no longer valid.
- Prepend the functions with dispc_mgr_*
- Remove "channel" from the name, e.g. dispc_enable_channel ->
  dispc_mgr_enable

The idea is to group manager related functions so that it can be deduced
from the function name that it writes to manager spesific registers.

All dispc_mgr_* functions have enum omap_channel as the first parameter.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: rename overlay related funcs
Tomi Valkeinen [Tue, 16 Aug 2011 10:25:00 +0000 (13:25 +0300)]
OMAP: DSS2: DISPC: rename overlay related funcs

Rename dispc's overlay related functions as follows:

- Remove prepending underscores, which were originally used to inform
  that the clocks needs to be enabled. This meaning is no longer valid.
- Prepend the functions with dispc_ovl_*
- Remove "plane" from the name, e.g. dispc_set_plane_ba0 ->
  dispc_ovl_set_ba0

The idea is to group overlay related functions so that it can be deduced
from the function name that it writes to overlay spesific registers.

All dispc_ovl_* functions have enum omap_plane as the first parameter.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: remove non-existing func prototypes
Tomi Valkeinen [Tue, 16 Aug 2011 10:04:04 +0000 (13:04 +0300)]
OMAP: DSS2: DISPC: remove non-existing func prototypes

The functions do not exist, so remove the prototypes.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: OMAPFB: string parsing cleanups
Tomi Valkeinen [Mon, 15 Aug 2011 12:56:54 +0000 (15:56 +0300)]
OMAP: OMAPFB: string parsing cleanups

Use strtobool instead of kstrtoint when parsing bool from sysfs.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: string parsing cleanups
Tomi Valkeinen [Mon, 15 Aug 2011 12:55:55 +0000 (15:55 +0300)]
OMAP: DSS2: string parsing cleanups

Use strtobool and kstrto* functions when parsing sysfs inputs.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Add GLOBAL_ALPHA & PRE_MULT_ALPHA to ovl caps
Tomi Valkeinen [Mon, 15 Aug 2011 12:18:20 +0000 (15:18 +0300)]
OMAP: DSS2: Add GLOBAL_ALPHA & PRE_MULT_ALPHA to ovl caps

Add OMAP_DSS_OVL_CAP_GLOBAL_ALPHA and OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA to
overlay capabilities. Use these instead of FEAT_GLOBAL_ALPHA,
FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA in code.

Remove FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA which are no
longer used. FEAT_GLOBAL_ALPHA is still used to decide if the HW has
global alpha register.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Archit Taneja <archit@ti.com>
12 years agoOMAP: DSS2: Add overlay caps to DSS features
Tomi Valkeinen [Mon, 15 Aug 2011 12:18:15 +0000 (15:18 +0300)]
OMAP: DSS2: Add overlay caps to DSS features

Add support to define overlay capabilities into dss_features. The
features are set to overlay->caps at initialization time.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Archit Taneja <archit@ti.com>
12 years agoOMAP: DSS2: DISPC: use lookup tables for bit shifts
Tomi Valkeinen [Mon, 15 Aug 2011 08:51:50 +0000 (11:51 +0300)]
OMAP: DSS2: DISPC: use lookup tables for bit shifts

Use lookup tables instead of switch/if in some DISPC functions to make
the code cleaner.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Archit Taneja <archit@ti.com>
12 years agoOMAP: DSS2: Remove support for non-DISPC overlays
Tomi Valkeinen [Mon, 15 Aug 2011 08:22:21 +0000 (11:22 +0300)]
OMAP: DSS2: Remove support for non-DISPC overlays

Remove support for non-DISPC overlays and overlay managers.

The support to possibly have non-DISPC overlays and managers was made to
make it possible to use CPU and/or sDMA to update RFBI or DSI command
mode displays. It is ok to remove the support, because:

- No one has used the feature.
- Display update without DISPC is very slow, so it is debatable if the
  update would even be usable.
- Removal cleans up code.
- If such a feature is needed later, it is better implemented outside
  omapdss driver.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: Archit Taneja <archit@ti.com>
12 years agoOMAP: DSS2: Remove "EXPERIMENTAL" from Kconfig
Tomi Valkeinen [Mon, 22 Aug 2011 06:30:44 +0000 (09:30 +0300)]
OMAP: DSS2: Remove "EXPERIMENTAL" from Kconfig

DSS driver has not been "experimental" for many years now, so perhaps
it's time to remove the text from Kconfig titles.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Handle manager change in apply
Tomi Valkeinen [Tue, 16 Aug 2011 09:56:19 +0000 (12:56 +0300)]
OMAP: DSS2: Handle manager change in apply

Currently when changing the manager of an overlay, set_manager() directly
calls dispc to set the overlay's destination.

Change this to be more in line with other overlay configurations, and
this will also remove the need to have dispc clocks enabled when calling
set_manager().

A new field is added to overlay struct, "manager_changed". This is
similar to "display_changed" field in manager struct, and is used to
inform apply that the manager has changed and thus write to the
registers is needed.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: fix clock sources on error and uninit
Tomi Valkeinen [Wed, 10 Aug 2011 08:25:36 +0000 (11:25 +0300)]
OMAP: DSS2: fix clock sources on error and uninit

DPI and DSI were not cleaning up the clock source in error or uninit
cases. Set the clock source back to PRCM.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: OMAPFB: make omapfb start even when a display is missing a driver
Tomi Valkeinen [Thu, 4 Aug 2011 11:37:29 +0000 (14:37 +0300)]
OMAP: OMAPFB: make omapfb start even when a display is missing a driver

Currently omapfb wants that all the display devices have a driver,
otherwise omapfb refuses to start. There's no real requirement to act
like that, and this patch will make omapfb give a warning and skip that
device.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Implement dsi_mux_pads for OMAP4
Tomi Valkeinen [Wed, 15 Jun 2011 12:22:47 +0000 (15:22 +0300)]
OMAP: DSS2: Implement dsi_mux_pads for OMAP4

Implement dsi_mux_pads for OMAP4. On enable the function enables the DSI
pins and disables pull down. On disable the function disables the pins
and enables pull down.

It is unclear from the TRM whether the pull down is active if the pins
are disabled, so this implementation may leave the pins floating when
the DSI device is disabled.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DSI: Improve dsi_mux_pads parameters
Tomi Valkeinen [Wed, 15 Jun 2011 12:21:12 +0000 (15:21 +0300)]
OMAP: DSS2: DSI: Improve dsi_mux_pads parameters

dsi_mux_pads() needs to know about the DSI HW module and the DSI lanes
used. Split the function into two, enable and disable, which take
necessary arguments, and add empty implementations for both.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP4: TWL: Add common omapdss supplies
Tomi Valkeinen [Wed, 3 Aug 2011 11:13:52 +0000 (14:13 +0300)]
OMAP4: TWL: Add common omapdss supplies

OMAP DSS normally gets power from VCXIO on OMAP4. Add configuration for
this into twl-common.c

Mark VCXIO as always_on, as VCXIO is used by multiple components,
including the MPU, and turning it off when DSS doesn't need it would
lead the device to halt.

Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Change DSI device naming
Tomi Valkeinen [Wed, 3 Aug 2011 11:00:57 +0000 (14:00 +0300)]
OMAP: DSS2: Change DSI device naming

Currently, there are 2 differently named platform devices generated for
the 2 DSS DSI modules. In order to use the same driver, the dsi devices
should be 2 instances of the same platform device.

Change the platform device names from "omapdss_dsi1" and "omapdss_dsi2"
to omapdss_dsi", and set the device indices to 0 and 1.

Signed-off-by: Archit Taneja <archit@ti.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: remove unneeded fck enable/disables
Tomi Valkeinen [Tue, 2 Aug 2011 08:54:39 +0000 (11:54 +0300)]
OMAP: DSS2: remove unneeded fck enable/disables

Now that the HWMOD fmwk handles the fcks of DSS modules properly, the
DSS driver no longer needs to explicitely enable/disable the fck.

This patch removes the enables/disables of fck from dispc, dsi and dss.
The clk_get(fck) is still needed there, as the modules need to know the
frequency of the clock.

For hdmi and venc this patch also removes the clk_get(fck), as they
don't need the clock at all.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoRevert "OMAP: DSS2: HDMI: fix hdmi clock name"
Tomi Valkeinen [Thu, 4 Aug 2011 08:23:23 +0000 (11:23 +0300)]
Revert "OMAP: DSS2: HDMI: fix hdmi clock name"

This reverts commit df5d3ed23cf73ee0763a8963003bda9b69d9620f.

The HDMI clock name has been fixed in HWMOD data.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoRevert "HACK: OMAP: DSS2: clk hack for OMAP2/3"
Tomi Valkeinen [Thu, 4 Aug 2011 08:22:54 +0000 (11:22 +0300)]
Revert "HACK: OMAP: DSS2: clk hack for OMAP2/3"

This reverts commit 9ede365aa6f74428a1f69c21ca1cf21213167576.

The hack is no longer needed, as the HWMOD data has been fixed.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Use a macro to declare size of the fifo_size array in dispc.c
Archit Taneja [Fri, 5 Aug 2011 13:36:04 +0000 (19:06 +0530)]
OMAP: DSS2: Use a macro to declare size of the fifo_size array in dispc.c

The array size of fifo_size array in the global dispc struct is currently
hardcoded to 3. Replace this with the MAX_DSS_OVERLAYS macro in dss_features.h,
use dss_features function to get the number of overlays instead of the
ARRAY_SIZE macro in dispc_read_plane_fifo_sizes().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: Shorten _dispc_set_color_conv_coef()
Archit Taneja [Fri, 5 Aug 2011 13:36:03 +0000 (19:06 +0530)]
OMAP: DSS2: DISPC: Shorten _dispc_set_color_conv_coef()

Iterate over overlay id's to shorten _dispc_set_color_conv_coef()

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: dispc_save_context() and dispc_restore_context() cleanup
Archit Taneja [Fri, 5 Aug 2011 13:36:02 +0000 (19:06 +0530)]
OMAP: DSS2: DISPC: dispc_save_context() and dispc_restore_context() cleanup

Iterate over manager and overlay id's to shorten dispc_save_context() and
dispc_restore_context().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: Shorten dispc_dump_regs()
Archit Taneja [Fri, 5 Aug 2011 13:36:01 +0000 (19:06 +0530)]
OMAP: DSS2: DISPC: Shorten dispc_dump_regs()

Iterate over manager and overlay id's to shorten dispc_dump_regs().

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: DISPC: Prepare dispc_dump_regs() for shortening
Archit Taneja [Fri, 5 Aug 2011 13:36:00 +0000 (19:06 +0530)]
OMAP: DSS2: DISPC: Prepare dispc_dump_regs() for shortening

Prepare dispc_dump_regs() to iterate over manager and overlay id's. Doing this
requires modifications of the macro "DUMPREG" which currently needs us to specify
the manager/overlay name to get the correct result. For example, in order to
print the register DISPC_TIMING_H(OMAP_DSS_CHANNEL_LCD), we can't iterate over
a varaible i and get the desired result through DUMPREG(DISPC_TIMING_H(i)).

Split the registers into 3 sections, the first with no arguments(common
registers), the second with one argument(manager/overlay id), and the third with
two arguments(overlay id and coefficient index), redefine DUMPREG macros for
each of these.

Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAPFB: make debug message more useful
Andy Doan [Wed, 6 Jul 2011 17:08:29 +0000 (12:08 -0500)]
OMAPFB: make debug message more useful

Make the debug message useful by printing the name of the device
that no associated driver could be found for.

Signed-off-by: Andy Doan <andy.doan@linaro.org>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS: dispc: enable/disable clocks in error handler
Dima Zavin [Mon, 27 Jun 2011 17:31:05 +0000 (10:31 -0700)]
OMAP: DSS: dispc: enable/disable clocks in error handler

There's no guarantee that the error handler worker thread
will run while the dispc clocks are on. Explicitly enable/disable
them.

Signed-off-by: Dima Zavin <dima@android.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Don't allow moving managers away from enabled displays
Daniel Morsing [Wed, 3 Aug 2011 20:10:51 +0000 (22:10 +0200)]
OMAP: DSS2: Don't allow moving managers away from enabled displays

If a manager is moved while attached to an enabled display, the DSS
system will be left in an inconsistent state. This will eventually cause
a kernel oops when the enabled display is disabled.

Fix this by not allowing the user to move a manager away from an enabled
display.

Signed-off-by: Daniel Morsing <daniel.morsing@gmail.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: check for manager when enabling display
Tomi Valkeinen [Thu, 23 Jun 2011 13:38:21 +0000 (16:38 +0300)]
OMAP: DSS2: check for manager when enabling display

None of the DSS interface drivers check if an overlay manager is
connected to the display when the display is being enabled. This leads
to null pointer crash if the display has no manager.

This patch checks for the manager and returns an error if it is null.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: PicoDLP: fix error handling in power_on
Tomi Valkeinen [Thu, 23 Jun 2011 13:36:36 +0000 (16:36 +0300)]
OMAP: DSS2: PicoDLP: fix error handling in power_on

Fix two problems in PicoDLP driver's error handling on
picodlp_panel_power_on:

- If omapdss_dpi_display_enable() failed, the its error value was not
  returned
- If picodlp_i2c_init() failed, dssdev->state was erroneously set to
  OMAP_DSS_DISPLAY_ACTIVE

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoOMAP: DSS2: Add picodlp panel driver
Mayuresh Janorkar [Tue, 17 May 2011 12:19:40 +0000 (17:49 +0530)]
OMAP: DSS2: Add picodlp panel driver

PicoDLP is a micro projector from TI.

DLP used in OMAP4 is dpp2600 (DLP Pico Projector) The DLP requires
commands to be sent over i2c for configurations. To know more about
dpp2600 commands please visit:
https://focus.ti.com/myti/docs/extranet.tsp?sectionId=403

The picodlp module consists of a dss driver and an i2c_client.

To know more please visit:
http://www.omappedia.org/wiki/PicoDLP_projector_guide

Based on original design from Mythri P K <mythripk@ti.com>

Signed-off-by: Mayuresh Janorkar <mayur@ti.com>
Signed-off-by: Mythri P K <mythripk@ti.com>
[tomi.valkeinen@ti.com: squashed commits]
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
12 years agoLinux 3.1-rc6 v3.1-rc6
Linus Torvalds [Mon, 12 Sep 2011 21:02:02 +0000 (14:02 -0700)]
Linux 3.1-rc6