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>
without MODULE_ALIAS(), omapfb won't get loaded
automatically.
Signed-off-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Replace the use of nested functions where a normal function will suffice.
Nested functions are not liked by upstream kernel developers in general. Their
use breaks the use of clang as a compiler, and doesn't make the code any
better.
This code now works for both gcc and clang.
Signed-off-by: Behan Webster <behanw@converseincode.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Replace the use of nested functions where a normal function will suffice.
Nested functions are not liked by upstream kernel developers in general. Their
use breaks the use of clang as a compiler, and doesn't make the code any
better.
This code now works for both gcc and clang.
Signed-off-by: Behan Webster <behanw@converseincode.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Felipe Balbi <balbi@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Use c99 initializers for structures.
A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)
// <smpl>
@decl@
identifier i1,fld;
type T;
field list[n] fs;
@@
struct i1 {
fs
T fld;
...};
@bad@
identifier decl.i1,i2;
expression e;
initializer list[decl.n] is;
@@
struct i1 i2 = { is,
+ .fld = e
- e
,...};
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
* Much better HDMI infoframe support for OMAP
* Cirrus Logic CLPS711X framebuffer driver
* DT support for PL11x CLCD driver
* Various small fixes
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJT5LUrAAoJEPo9qoy8lh71G2kP/RyomOV8mOPErkVgslJukMlW
iJO/Y47GcnHzosKK+7u8MUXlpbBdZjyoaKJxuh+D1OL0vc/LrSar4IwicqqGcD2C
l5N8b9NytOf+sjtYuD24xkGo9bLr8vkaVNC3cgPNjE/x1kgRrtHoap1NOlv8vvuT
OnbSkRdg/oENrdzwWjwJeayvT5a3TxLJY5JM9IMTzw6CKROIYScEmHUsy0jH2h/g
60OrGPdzmPPutUKA/ZWe8Nu0Mhf4GcOeIl8CZ/u7ZyME7NKezyF0iATpMzn3+ylf
9GafGbsxwgNW2KwoF379w6CV49UNyQhx4qxlkg8/N2km6ot6s1WoJrb/32qPu05J
Wydfbovxo9elM/144m47a89TR4xV6Ia35kbSDmwrR7gmKjIDUE34Ruc7RdCLdO8n
SxIG5724pktKlP1bdOT6gCLFnDq6vFK0gNnWwlCRKWnwg0H+Cyg5S07BNEF7/dvO
gOkRPuyWz3m4rlpl9dL+TW+jaQR/FQAAgf8pUdjBeUTogUTvWf2NBb3H1bKoAnaE
4fhLwE1qUxep3rhOqOpLbGzDmpvt0ebcNJzseypaSTO9c8QNbZJkxLLC1jchUjPj
6FP4/SocuySik3on6Qulj6xGrp4zskBnjsTXOIZzxXjByX6uf/DNWPHEcEM9zIEk
u0trGuXxlx8JkRkV/7aE
=gXX+
-----END PGP SIGNATURE-----
Merge tag 'fbdev-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux
Pull fbdev updates from Tomi Valkeinen:
- much better HDMI infoframe support for OMAP
- Cirrus Logic CLPS711X framebuffer driver
- DT support for PL11x CLCD driver
- various small fixes
* tag 'fbdev-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/tomba/linux: (35 commits)
OMAPDSS: DSI: fix depopulating dsi peripherals
video: hyperv: hyperv_fb: refresh the VM screen by force on VM panic
video: ARM CLCD: Fix DT-related build problems
drivers: video: fbdev: atmel_lcdfb.c: Add ability to inverted backlight PWM.
video: ARM CLCD: Add DT support
drm/omap: Add infoframe & dvi/hdmi mode support
OMAPDSS: HDMI: remove the unused code
OMAPDSS: HDMI5: add support to set infoframe & HDMI mode
OMAPDSS: HDMI4: add support to set infoframe & HDMI mode
OMAPDSS: HDMI: add infoframe and hdmi_dvi_mode fields
OMAPDSS: add hdmi ops to hdmi-connector and tpd12s015
OMAPDSS: add hdmi ops to hdmi_ops and omap_dss_driver
OMAPDSS: HDMI: remove custom avi infoframe
OMAPDSS: HDMI5: use common AVI infoframe support
OMAPDSS: HDMI4: use common AVI infoframe support
OMAPDSS: Kconfig: select HDMI
OMAPDSS: HDMI: fix name conflict
OMAPDSS: DISPC: clean up dispc_mgr_timings_ok
OMAPDSS: DISPC: reject interlace for lcd out
OMAPDSS: DISPC: fix debugfs reg dump
...
After v3.16-rc1, devices populated with of_platform_populate() should be
depopulated using of_platform_depopulate(). Failure to do so prevents
the devices from being populated again (e.g. when loading a module).
This patch fixes the problem for the OMAP DSI driver.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
We no longer need the horrible driver internal videmode tables, which
were used to decide if a given videomode is a HDMI or DVI mode. So
remove all related code.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Instead of using hardcoded AVI infoframe, and a custom HDMI/DVI mode
selection based in internal videomode tables, add support to set the
infoframe and HDMI/DVI mode.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Instead of using hardcoded AVI infoframe, and a custom HDMI/DVI mode
selection based in internal videomode tables, add support to set the
infoframe and HDMI/DVI mode.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add infoframe and hdmi_dvi_mode fields to 'struct hdmi_config' which
will be used in the following patches for OMAP4 and OMAP5 HDMI.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add pass-through functions for set_infoframe and set_hdmi_mode to
hdmi-connector and tpd12s015 drivers.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
We now use the common AVI infoframe support, so the OMAP specific AVI
infoframe code can be removed.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Instead of using OMAP specific AVI infoframe structs, use the common one
from include/linux/hdmi.h.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Instead of using OMAP specific AVI infoframe structs, use the common one
from include/linux/hdmi.h.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
OMAP HDMI driver has an 'enum hdmi_audio_sample_size', which conflicts
with the common include/linux/hdmi.h.
Change the name of the OMAP specific enum with '_omap" postfix.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
dispc_mgr_timings_ok() is a bit confusing how it handles the return
value.
Change the function to just return immediately when a timing is deemed
not valid, making the code much easier to follow.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
OMAP2/3 does not support interlace for LCD out. OMAP4+ does, but is not
supported by the driver at the moment.
The driver still accepts interlaced mode for LCD out, causing broken
display output.
This patch makes dispc reject interlace for LCD out.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
kmalloc can return null. Add a check to avoid potential null
pointer dereference error when the pointer is accessed later.
Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
After a variable is assigned the result of backlight_device_register, an
error test should be performed before a dereference.
A simplified version of the semantic match that finds this problem is
as follows:
// <smpl>
@def0@
expression x;
position p0;
@@
x@p0 = backlight_device_register(...)
@protected@
expression def0.x,E;
position def0.p0;
position p;
statement S;
@@
x@p0
... when != x = E
if (!IS_ERR(x) && ...) {<... x@p ...>} else S
@unprotected@
expression def0.x,E;
identifier fld;
position def0.p0;
position p != protected.p;
@@
x@p0
... when != x = E
* x@p->fld
// </smpl>
Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Move the panel/encoder driver compatible-string converter from
arch/arm/mach-omap2/display.c to omapdss driver. That is a more logical
place for it, as it's really an omapdss internal hack.
The code is rewritten to follow the video node graph, starting from
omapdss. This removes the need to have the device compatible-string
database.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Commit 59b3d38a36 missed cleaning up the
hdmi_wp.c file.
Clean up hdmi_wp.c the same way as the others.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
We don't have any working boards using this panel right now, and the
panel driver looks odd compared to the panel specs. For example, the
panel spec does not mention any QVGA pin.
So, while this patch adds DT support to the driver, it's not really
supported and there are not bindings documentation for the panel until
someone can verify how the panel actually works.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Erik Gilling <konkers@android.com>
Using gpiod will make it easier to add device tree support
for this panel in the following patches.
Note that all the GPIOs for this panel are optional, any
of the the GPIOs could be configured with external pulls
instead of GPIOs, so let's not error out if GPIOs are not
found to make the panel more generic.
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add DT support for panel-lgphilips-lb035q02.
We disable the use of the backlight_gpio as it should be handled via
backlight framework with DT boots.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Tested-by: Florian Vaussard <florian.vaussard@epfl.ch>
The new gpiod API supports automatic handling of active-high/active-low
with DT. To make it possible to use that when booting with DT, change
the driver's handling of the enable GPIO to use gpiod.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The enable gpio should be optional, but the driver returns an error if
it doesn't get the gpio.
So change the driver to accept -ENOENT error.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Tested-by: Joachim Eastwood <manabian@gmail.com>
When omapdss writes to DISPC_POL_FREQ register, it always ORs the bits
with the current contents of the register, never clearing the old ones,
causing wrong signal polarity settings.
As we write all the bits in DISPC_POL_FREQ, we don't need to care about
the current contents of the register. So fix the issue by constructing
new register value from scratch.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Now that all the boards using OMAP HDMI are using DT boot, we can remove
the hacks for getting the ioresources with non-DT boot.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This adds a new driver to omapdss for OMAP5 HDMI. However, the new
driver uses common HDMI files which are shared with OMAP4 HDMI driver.
OMAP5 HDMI has a different HDMI core IP compared to OMAP4, but has very
similar PLL and PHY IPs which can be handled with common code.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add a features struct to differentiate between the HDMI PLLs on OMAP4
and OMAP5. The OMAP5 PLL is more sensitive when it comes to locking. We
need to ensure that the DCO freq isn't too low for lower pixel clocks.
Modify the PLL computation slightly to ensure the HDMI PLL locks for lower
frequencies. This will be later replaced by a more complex computation
which makes sure all the PLL constraints are met.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
OMAP5 HDMI PHY has some differences compared to OMAP4 HDMI PHY. This
patch creates a features struct which help the driver configure the PHY
based on what SoC it is.
Some of the features aren't currenlty used, but will come in use later.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
The HDMI core IP on OMAP5 has a wider address range for registers. The offsets
for the later registers can't fit into the u16 type currently used for hdmi
register read and write functions. Use u32 for offsets instead.
Signed-off-by: Archit Taneja <archit@ti.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
HDMI IRQ handling was moved into hdmi_phy.c when restructuring the HDMI
driver. While this worked fine, it's not correct.
The HDMI IRQ handling should be either in the hdmi_wp, or in the main
hdmi driver. This patch moves the handling to the main hdmi driver, as I
feel it's a more appropriate choice.
This move also requires changing the handling of the PHY power, as that
was partly handled in the IRQ handler. The PHY power is handled via the
WP module. An option would be to give HDMI PHY driver function pointers
that it could use to manage the PHY power, but as the PHY power is not
needed to access the PHY registers, the handling was also moved to the
main HDMI driver. This could be changed later if need be.
Note that there's slightly similar power issue with the PLL: the HDMI
PLLs power is also handled via the WP module. For now, the PLL power
handling is still done inside the PLL driver.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
We'll soon add support for OMAP5 HDMI, which uses some of the same files
as OMAP4 HDMI does.
This patch adds a new config entry "OMAP2_DSS_HDMI_COMMON", which both
OMAP4 and OMAP5 HDMI config entries can select. OMAP2_DSS_HDMI_COMMON
will cause the common HDMI files to be compiled.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
At the moment the dpi driver does not handle LCD3 clock source at all.
LCD3 channel gets the DSI PLL clock from DSI2 instance. Add support for
LCD3's clock source in the dpi driver.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
OMAP5 has LCD3 overlay manager, and total 4 overlay managers. These are
not correctly defined in the dss features. Fix them.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
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>
The use of venc_panel.c was removed in
09d2e7cdeb (OMAPDSS: VENC: remove code
related to old panel model), but the file itself was left behind. Remove
the unused file.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
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>
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>
If LPAE is enabled, dma_addr_t is 64 bit, so we have to
change a few type for everything in this driver to match
again.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Peter Griffin <peter.griffin@linaro.org>
Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: linux-fbdev@vger.kernel.org
Cc: linux-omap@vger.kernel.org
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add module alias string to make it working when panel is compiled as module.
Without this change panel module is not probed thus display is not working.
Signed-off-by: Marek Belisko <marek@goldelico.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Set the DSI vdd regulator voltage to the required 1.8V.
This is required for the case when the regulator in the DT data defines
a range of allowed voltages. In this case it's required to set the
voltage, as otherwise enabling the voltage fails.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Set the HDMI vdda regulator voltage to the required 1.8V.
This is required for the case when the regulator in the DT data defines
a range of allowed voltages. In this case it's required to set the
voltage, as otherwise enabling the voltage fails.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add support to configure the pins used for the HDMI lanes. The order and
polarity of the lanes can be defined in the DT data.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add support to handle HPD GPIO in the HDMI connector driver. For the
time being, the driver only uses HPD GPIO to report is the cable is
connected via detect() calll.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Add DT support for panel-dpi.
We disable the use of the backlight_gpio as it should be handled via
backlight framework with DT boots.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Archit Taneja <archit@ti.com>
The new gpiod API supports automatic handling of active-high/active-low
with DT. To make it possible to use that when booting with DT, change
the panel-dpi's handling of the enable GPIO to use gpiod.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
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>