An error occurred fetching the project authors.
- 29 Dec, 2015 2 commits
-
-
Tomi Valkeinen authored
We need to change the config symbols of omapfb's private copy of omapdss so that we won't have config symbol conflicts. This patch changes the symbols from omapdss using simple replacement of CONFIG_OMAP* to CONFIG_FB_OMAP*. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Dave Airlie <airlied@gmail.com> Acked-by:
Rob Clark <robdclark@gmail.com>
-
Tomi Valkeinen authored
This patch makes a copy of the omapdss driver and the omap panel & encoder drivers for omapfb. The purpose is to separate omapdrm and omapfb drivers from each other. Note that this patch only does a direct copy of the files without any other modifications. The files are not yet used. The original files are in: drivers/video/fbdev/omap2/dss/ drivers/video/fbdev/omap2/displays-new/ Here's a more detailed explanation about this and the following patches, from the introduction mail of the patch series: A short background on the current status. We have the following entities: * omapdss, located in drivers/video/fbdev/omap2/dss/. This is a driver for the display subsystem IPs used on OMAP (and related) SoCs. It offers only a kernel internal API, and does not implement anything for fbdev or drm. * omapdss panels and encoders, located in drivers/video/fbdev/omap2/displays-new/. These are panel and external encoder drivers, which use APIs offered by omapdss driver. These also don't implement anything for fbdev or drm. * omapdrm, located in drivers/gpu/drm/omapdrm/. This is a drm driver, which uses omapdss and the panel/encoder drivers to operate the hardware. * omapfb, located in drivers/video/fbdev/omap2/omapfb/. This is an fbdev driver, which uses omapdss and the panel/encoder drivers to operate the hardware. * omap_vout, located in drivers/media/platform/omap/. This is a v4l2 driver, which uses omapdss and omapfb to implement a v4l2 API for the video overlays. So, on the top level, we have either omapdrm, or omapfb+omap_vout. Both of those use the same low level drivers. Without going to the historical details why the architecture is like that, I think it's finally time to change that. The situation with omapfb+omap_vout is that it still works, but no new features have been added for a long time, and I want to keep it working as it's still being used. At some point in the future I'd like to remove omapfb and omap_vout altogether. Omapdrm, on the other hand, is being actively developed. Sharing the low level parts with omapfb makes that development more difficult than it should be. It also "hides" half of the development, as everything happening in the low level parts resides under fbdev directory, not in the drm directory. I've been wanting to clean this up for a long time, but I haven't figured out a very good way to do it. I still haven't, but here's the best way I have come up with. This series makes a full copy of the low level parts, omapdss and panel/encoder drivers. Both omapfb+omap_vout and omapdrm will have their own versions. The copy omapfb+omap_vout get is a new copy, and the copy that omapdrm gets is just the current files moved. This way git will associate the omapdrm version with the old files. The omapfb+omap_vout versions won't be touched unless there are some big issues there. The omapdrm versions can be refactored and cleaned up, as the omapfb support code is no longer needed. We can perhaps also merge omapdss and omapdrm into the same kernel module. This series only does the copy, and the absolutely necessary parts. No further cleanups are done yet. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Dave Airlie <airlied@gmail.com> Acked-by:
Rob Clark <robdclark@gmail.com>
-
- 17 Dec, 2015 1 commit
-
-
Dave Gerlach authored
Update omapdss driver to set the state of the pins to: - "default on resume - "sleep" on suspend By optionally putting the pins into sleep state in the suspend callback we can accomplish two things. - minimize current leakage from pins and thus save power, - prevent the IP from driving pins output in an uncontrolled manner, which may happen if the power domain drops the domain regulator. Signed-off-by:
Dave Gerlach <d-gerlach@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 02 Jul, 2015 1 commit
-
-
Tomi Valkeinen authored
After the commit 736e60dd ("OMAPDSS: componentize omapdss") the dss core device will wait until all the subdevices have been successfully probed. However, we don't have a working driver for RFBI, so if RFBI device exists, omapdss will never get probed. All the .dtsi files set RFBI as disabled, except am4372.dtsi. This causes omapdss probe to not finish on AM4 devices. This patch makes omapdss driver skip adding rfbi device as a subcomponent, solving the issue. This should be reverted when we have a working RFBI driver. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Reported-by:
Felipe Balbi <balbi@ti.com>
-
- 17 Jun, 2015 5 commits
-
-
Tomi Valkeinen authored
omapdss kernel module contains drivers for multiple devices, one for each DSS submodule. The probing we have at the moment is a mess, and doesn't give us proper deferred probing nor ensure that all the devices are probed before omapfb/omapdrm start using omapdss. This patch solves the mess by using the component system for DSS submodules. The changes to all DSS submodules (dispc, dpi, dsi, hdmi4/5, rfbi, sdi, venc) are the same: probe & remove functions are changed to bind & unbind, and new probe & remove functions are added which call component_add/del. The dss_core driver (dss.c) acts as a component master. Adding and matching the components is simple: all dss device's child devices are added as components. However, we do have some dependencies between the drivers. The order in which they should be probed is reflected by the list in core.c (dss_output_drv_reg_funcs). The drivers are registered in that order, which causes the components to be added in that order, which makes the components to be bound in that order. This feels a bit fragile, and we probably should improve the code to manage binds in random order. However, for now, this works fine. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-
Tomi Valkeinen authored
The following patches will add component handling to omapdss, improving the handling of deferred probing. However, at the moment we're using quite a lot of __inits and __exits in the driver, which prevent normal dynamic probing and removal. This patch removes most of the uses of __init and __exit, so that we can register drivers after module init, and so that we can unregister drivers even if the module is built-in. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-
Tomi Valkeinen authored
The return value of dss_init_ports() is not handled at all, causing crashes later if the call failed. This patch adds the error handling, and we also move the call to a slightly earlier place to make bailing out easier. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-
Tomi Valkeinen authored
Refactor dss probe function by extracting the setup for video plls into a separate function. The call to this function is also moved to a slightly earlier phase, so that in error case we can bail out more easily. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-
Tomi Valkeinen authored
We have a flag, 'dss_initialized', which tells omapfb and omapdrm if omapdss is available. At the moment it can be set even if the dss submodules are not all ready, in case something gets deferred. Move the flag to dss_core driver so that it'll signal the availability of the dss drivers move accurately. For now, it'll signal that dss_core is ready, which is not quite correct but still better than previously. The following patches will add component system to omapdss, and after those patches 'dss_initialized' will signal that all the submodules are ready. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-
- 20 Apr, 2015 1 commit
-
-
Tomi Valkeinen authored
We don't need VT switch when suspending/resuming, so disable it. This speeds up suspend/resume. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: NeilBrown <neil@brown.name>
-
- 04 Feb, 2015 4 commits
-
-
Tomi Valkeinen authored
DRA7xx SoCs have one (DRA72x) or two (DRA74x) video PLLs. They are basically the same as DSI PLLs on OMAPs, but without the rest of the DSI hardware. The video PLLs also require some configuration via the CONTROL module. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
Add functions which configure the control module register CTRL_CORE_DSS_PLL_CONTROL found in DRA7xx SoCs. This register configures whether the PLL registers are accessed internally by DSS, or externally using OCP2SCP interface. They also configure muxes which route the PLL output to a particular LCD overlay manager within DSS. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
Add base support for DRA7xx to DSS core. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
The port arrays are constant data, so set them as 'const'. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 12 Nov, 2014 5 commits
-
-
Tomi Valkeinen authored
With the previous patch "OMAPDSS: DSI: wait for hsdiv clocks when enabling PLL", dsi_wait_pll_hsdiv_dispc_active and dsi_wait_pll_hsdiv_dsi_active are no longer needed, so they and the callers can be removed. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Archit Taneja authored
Add a 'port' parameter in dpi_select_source. The param tells the port number of the DPI instance that we want to configure. We use this number to select the overlay manager for that DPI instance. Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Archit Taneja authored
The init/uninit port functions are used to set up the DPI and SDI outputs under the dss platform device. A 'reg' property is used to determine the port number of the output. This tells us whether the port is DPI or SDI for OMAP34xx DSS revision. For other DSS revisions, we only have DPI outputs under the dss platform device. For multiple DPI output instances(introduced in DRA7xx DSS), we will use the the port number to specify which DPI output instance is being inited. The current functions work fine if there is only one DPI output instance in DSS. For multiple DPI instances, it would get complicated to figure out whether port number was used to specify whether the output is SDI, or another DPI instance. We create a list of port types supported for each DSS rev, with the index of the port in the list specifying the port number of the output for that DSS revision. This allows us to have a more generic way to init/uninit ports within DSS, and also support multiple DPI ports. We make the uninit_port functions iterative since we will have multiple DPI ports to uninit in the future. Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Archit Taneja authored
DPI and SDI ports are backed by only one parent DSS device. We don't have a corresponding platform_device for ports under DSS. In order to support multiple instances of DPI, we need to pass the driver data pointer through the DPI port's private data ('data' member in device_node struct). dpi_init_output/dpi_uninit_output are untouched and only used for non-DT case, these are called when the DPI platform device probed/removed. These funcs will be removed when non-DT mode is removed. dpi_init_output_port/dpi_uninit_output_port are created and used for the DT path, called when DSS inits/uninits it's ports. These new functions retrieve the dpi_data pointer from 'port->data', and not from the platform device's data(pdev->dev) like in the non-DT path. We add some code in dss_uninit_ports() to pass a pointer to the DPI port in dpi_uninit_port(). Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Archit Taneja authored
Allocate driver data(dpi_data) for each DPI instance. It's allocated in omap_dpi_probe() when DT isn't used, and in dpi_init_port() when DT is used. The dpi_data struct instance is no longer global. In the case of DPI ops, it's retrieved from dpi_get_data_from_dssdev(). 'dssdev' passed by the connected encoder/panel driver is a pointer to the 'output' member in dpi_data, and thus can be used to get the DPI instance's driver data. In the case of probe/ini_port functions, it's set as DPI/DSS device's private data embedded in the platform_device struct. Having dpi_data as private data of the platform device will not work for multiple DPI instances in the DT case. This is because there is no corresponding platform_device for DPI or SDI, they exist only as ports under the parent DSS platform_device in the DT case. The DPI port's private data('data' member in device_node struct) will later be used to store dpi_data. Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 22 Oct, 2014 1 commit
-
-
Tomi Valkeinen authored
omapdss drivers cannot handle devices being unbound while the devices are part of a connected display pipeline. Module refcounts are used to prevent unloading the modules, but one can still manually unbind the devices via sysfs, causing crash. Set suppress_bind_attrs to disable the bind/unbind support via sysfs. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 20 Oct, 2014 1 commit
-
-
Wolfram Sang authored
A platform_driver does not need to set an owner, it will be populated by the driver core. Signed-off-by:
Wolfram Sang <wsa@the-dreams.de>
-
- 09 May, 2014 4 commits
-
-
Tomi Valkeinen authored
Add omap5 entries to dispc's and dss's of_device_id tables. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Sathya Prakash M R authored
Add DSS features for AM43xx. Signed-off-by:
Sathya Prakash M R <sathyap@ti.com> Acked-by:
Tony Lindgren <tony@atomide.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Archit Taneja authored
The support for simpler port/endpoint binding was removed in the merged version of omapdss DT. But dss_init_ports still tries to get to an endpoint even if no port exists. Remove this as this doesn't work. Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Fabian Frederick authored
dss_uninit_ports is only called by __exit omap_dsshw_remove Cc: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: linux-omap@vger.kernel.org Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Fabian Frederick <fabf@skynet.be> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 17 Apr, 2014 1 commit
-
-
Tomi Valkeinen authored
The drivers/video directory is a mess. It contains generic video related files, directories for backlight, console, linux logo, lots of fbdev device drivers, fbdev framework files. Make some order into the chaos by creating drivers/video/fbdev directory, and move all fbdev related files there. No functionality is changed, although I guess it is possible that some subtle Makefile build order related issue could be created by this patch. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Acked-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by:
Geert Uytterhoeven <geert@linux-m68k.org> Acked-by:
Rob Clark <robdclark@gmail.com> Acked-by:
Jingoo Han <jg1.han@samsung.com> Acked-by:
Daniel Vetter <daniel.vetter@ffwll.ch>
-
- 14 Apr, 2014 1 commit
-
-
Tomi Valkeinen authored
"clk: divider: fix rate calculation for fractional rates" patch (and similar for TI specific divider) fixes the clk-divider's rounding. This patch updates the DSS driver to round the rates accordingly. This fixes the DSS's warnings about clock rate mismatch, and also fixes the wrong fclk rate being set. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Tested-by:
Christoph Fritz <chf.fritz@googlemail.com> Tested-by:
Marek Belisko <marek@goldelico.com>
-
- 04 Apr, 2014 1 commit
-
-
Tomi Valkeinen authored
dss_init_ports() is missing __init, so fix that. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 19 Mar, 2014 1 commit
-
-
Tomi Valkeinen authored
Add DT support for DSS. Contrary to the non-DT version, the DSS in DT mode contains DPI and SDI outputs, which better reflects the hardware. The non-DT code will be removed after all boards have been converted to DT, so there's no need to change the non-DT code to act the same way. The code for DPI and SDI needs to be refined later to make it possible to add multiple DPI ports. For now, handling just a single DPI port is enough for all the boards. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by:
Archit Taneja <archit@ti.com>
-
- 28 Feb, 2014 1 commit
-
-
Tomi Valkeinen authored
The omapdss driver no longer uses get_context_loss_count call, so we can remove it. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com> Reviewed-by:
Archit Taneja <archit@ti.com>
-
- 18 Nov, 2013 7 commits
-
-
Tomi Valkeinen authored
This patch adds support for SoCs that have a dedicated DSS PLL used for DSS function clock. If there is no dss parent clock defined, it is presumed that the functionl clock rate can be set (almost) freely. The code calculates the highest allowed fck rate, which when divided with some integer gives the required pck. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
We need the required pixel clock rate when calculating the dss fclk on SoCs that have a dedicated DSS PLL. This patch changes the code to pass the pck to the calc functions. The pck rate is taken into use in the next patch. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
The dss parent_clk_name currently points to a clock node which we use to change the fclk rate. Now that we have CLK_SET_RATE_PARENT properly set, we can set the rate directly to the fclk node. However, we still need to calculate the possible clock rates. For this, we need the rate of the parent of the current parent_clk. To simplify the code, this patch changes the parent_clk_name to point to the above mentioned parent, so that we can get the rate directly. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
Rename the variables related to DSS fclk's parent: "clk_name" and "dpll4_m4_ck", to "parent_clk_name" and "parent_clk", which much better tell what they mean. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
Simplify dss_dump_clocks() so that it doesn't make any presumptions about the DSS fclks nature. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
Remove struct dss_clock_info, as it is not usable in a case where DSS fclk comes from a dedicated PLL. Instead, just use the fclk rate in place of dss_clock_info, as that is all that's needed. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
Tomi Valkeinen authored
The driver considers OMAP2 DSS's functional clock as a fixed clock. However, it can be changed, but the possible dividers are not continuous which is why it was just handled as a fixed clock. As a partial fix, this patch changes the code to handle the continous part of the dividers, from 1 to 6. This let's us handle the OMAP2 fck the same way as fcks on other OMAPs. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 17 Jun, 2013 1 commit
-
-
Tomi Valkeinen authored
When using DT, dss device does not have platform data. However, dss_get_ctx_loss_count() uses dss device's platform data to find the get_ctx_loss_count function pointer. To fix this, dss_get_ctx_loss_count() needs to be changed to get the platform data from the omapdss device, which is a "virtual" device and always has platform data. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 11 Apr, 2013 1 commit
-
-
Tomi Valkeinen authored
DSS func clock is calculated with prate / div * m. However, the current omapdss code calculates it with prate * m / div, which yields a slightly different result when there's a remainder. For example, 432000000 / 14 * 2 = 61714284, but 432000000 * 2 / 14 = 61714285. In addition to that, the clock framework wants the clock rate given with clk_set_rate to be higher than the actual (truncated) end result. So, if prate is 432000000, and div is 14, the real result is 30857142.8571... We need to call clk_set_rate with 30857143, which gives us a clock of 30857142. That's why we need to use DIV_ROUND_UP() when calling clk_set_rate. This patch fixes the clock calculation. Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-
- 10 Apr, 2013 1 commit
-
-
Archit Taneja authored
Use devm_clk_get() instead of clk_get() for dss, and for outputs hdmi and venc. This reduces code and simplifies error handling. Signed-off-by:
Archit Taneja <archit@ti.com> Signed-off-by:
Tomi Valkeinen <tomi.valkeinen@ti.com>
-