summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* OMAP4: DSS2: HDMI: Move the EDID definition from HDMIMythri P K2011-09-302-10/+10
| | | | | | | 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>
* OMAP4: DSS2: HDMI: Move HDMI IP independent generic headerMythri P K2011-09-304-71/+95
| | | | | | | | 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>
* OMAP4: DSS2: HDMI: Use specific HDMI timings structureMythri P K2011-09-302-4/+34
| | | | | | | | | 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>
* OMAP4: DSS2: HDMI: Move pll and video configurationMythri P K2011-09-303-38/+37
| | | | | | | | | | 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>
* OMAP4: DSS2: HDMI: HDMI clean up to pass base_addressMythri P K2011-09-302-358/+435
| | | | | | | | | 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>
* OMAP: DSS2: DSI Video mode supportArchit Taneja2011-09-302-29/+263
| | | | | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: DSI: Send zero length packet in dsi_vc_send_null()Archit Taneja2011-09-301-3/+2
| | | | | | | | | | | | | 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>
* OMAP: DSS2: Create an enum for DSI pixel formatsArchit Taneja2011-09-305-7/+44
| | | | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: Clean up stallmode and io pad mode selectionArchit Taneja2011-09-306-40/+35
| | | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: DSI: Introduce generic read functionsArchit Taneja2011-09-302-10/+142
| | | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: DSI: Split dsi_vc_dcs_read() into 2 functionsArchit Taneja2011-09-301-12/+49
| | | | | | | | | | | | 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>
* OMAP: DSS2: DSI: Remove functions dsi_vc_dcs_read_1() and dsi_vc_dcs_read_2()Archit Taneja2011-09-302-42/+0
| | | | | | | | | | 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>
* OMAP: DSS2: DSI: Introduce generic write functionsArchit Taneja2011-09-303-14/+87
| | | | | | | | | | | | | 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>
* OMAP: DSS2: Create enum for DSI operation modesArchit Taneja2011-09-302-3/+11
| | | | | | | | 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>
* OMAP: DSS2: DSI: Represent L4 and VP as sources of VC instead of modesArchit Taneja2011-09-301-51/+21
| | | | | | | | | | | 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>
* OMAP: DSS2: Use MIPI DSI enums from include/video/mipi_display.hArchit Taneja2011-09-302-58/+35
| | | | | | | | | | 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>
* OMAP: Devkit8000: Change lcd driver to AT070TN83Thomas Weber2011-09-301-1/+1
| | | | | | | Change lcd driver from generic to AT070TN83. Signed-off-by: Thomas Weber <weber@corscience.de> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* OMAP: DSS2: Support for Innolux AT070TN83Thomas Weber2011-09-301-0/+25
| | | | | | | | | | 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>
* OMAP: DSS2: reorganize functions in dss.hTomi Valkeinen2011-09-301-24/+22
| | | | | | Group dispc's overlay and manager related functions. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* OMAP: DSS2: DISPC: rename manager related funcsTomi Valkeinen2011-09-308-117/+119
| | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: DISPC: rename overlay related funcsTomi Valkeinen2011-09-303-90/+94
| | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: DISPC: remove non-existing func prototypesTomi Valkeinen2011-09-301-5/+0
| | | | | | The functions do not exist, so remove the prototypes. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* OMAP: OMAPFB: string parsing cleanupsTomi Valkeinen2011-09-301-4/+2
| | | | | | Use strtobool instead of kstrtoint when parsing bool from sysfs. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* OMAP: DSS2: string parsing cleanupsTomi Valkeinen2011-09-303-33/+32
| | | | | | Use strtobool and kstrto* functions when parsing sysfs inputs. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* OMAP: DSS2: Add GLOBAL_ALPHA & PRE_MULT_ALPHA to ovl capsTomi Valkeinen2011-09-305-40/+27
| | | | | | | | | | | | | 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>
* OMAP: DSS2: Add overlay caps to DSS featuresTomi Valkeinen2011-09-303-3/+57
| | | | | | | | 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>
* OMAP: DSS2: DISPC: use lookup tables for bit shiftsTomi Valkeinen2011-09-301-154/+50
| | | | | | | | 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>
* OMAP: DSS2: Remove support for non-DISPC overlaysTomi Valkeinen2011-09-306-275/+22
| | | | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: Remove "EXPERIMENTAL" from KconfigTomi Valkeinen2011-09-302-2/+2
| | | | | | | 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>
* OMAP: DSS2: Handle manager change in applyTomi Valkeinen2011-09-305-10/+11
| | | | | | | | | | | | | | | | 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>
* OMAP: DSS2: fix clock sources on error and uninitTomi Valkeinen2011-09-302-1/+6
| | | | | | | 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>
* OMAP: OMAPFB: make omapfb start even when a display is missing a driverTomi Valkeinen2011-09-301-2/+3
| | | | | | | | | 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>
* OMAP: DSS2: Implement dsi_mux_pads for OMAP4Tomi Valkeinen2011-09-301-0/+40
| | | | | | | | | | | | 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>
* OMAP: DSS2: DSI: Improve dsi_mux_pads parametersTomi Valkeinen2011-09-303-12/+47
| | | | | | | | 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>
* OMAP4: TWL: Add common omapdss suppliesTomi Valkeinen2011-09-301-0/+9
| | | | | | | | | | | | 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>
* OMAP: DSS2: Change DSI device namingTomi Valkeinen2011-09-305-21/+16
| | | | | | | | | | | | | 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>
* OMAP: DSS2: remove unneeded fck enable/disablesTomi Valkeinen2011-09-205-39/+0
| | | | | | | | | | | | | | 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>
* Revert "OMAP: DSS2: HDMI: fix hdmi clock name"Tomi Valkeinen2011-09-201-2/+2
| | | | | | | | This reverts commit df5d3ed23cf73ee0763a8963003bda9b69d9620f. The HDMI clock name has been fixed in HWMOD data. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* Revert "HACK: OMAP: DSS2: clk hack for OMAP2/3"Tomi Valkeinen2011-09-205-19/+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>
* OMAP: DSS2: Use a macro to declare size of the fifo_size array in dispc.cArchit Taneja2011-09-141-2/+2
| | | | | | | | | | 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>
* OMAP: DSS2: DISPC: Shorten _dispc_set_color_conv_coef()Archit Taneja2011-09-141-26/+16
| | | | | | | 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>
* OMAP: DSS2: DISPC: dispc_save_context() and dispc_restore_context() cleanupArchit Taneja2011-09-141-277/+125
| | | | | | | | 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>
* OMAP: DSS2: DISPC: Shorten dispc_dump_regs()Archit Taneja2011-09-141-229/+99
| | | | | | | 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>
* OMAP: DSS2: DISPC: Prepare dispc_dump_regs() for shorteningArchit Taneja2011-09-141-205/+239
| | | | | | | | | | | | | | | | 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>
* OMAPFB: make debug message more usefulAndy Doan2011-09-141-1/+2
| | | | | | | | 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>
* OMAP: DSS: dispc: enable/disable clocks in error handlerDima Zavin2011-09-141-0/+4
| | | | | | | | | 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>
* OMAP: DSS2: Don't allow moving managers away from enabled displaysDaniel Morsing2011-09-141-0/+7
| | | | | | | | | | | | 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>
* OMAP: DSS2: check for manager when enabling displayTomi Valkeinen2011-09-145-0/+27
| | | | | | | | | | 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>
* OMAP: DSS2: PicoDLP: fix error handling in power_onTomi Valkeinen2011-09-141-2/+4
| | | | | | | | | | | | 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>
* OMAP: DSS2: Add picodlp panel driverMayuresh Janorkar2011-09-145-0/+910
| | | | | | | | | | | | | | | | | | | | | 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>