Sebastian Reichel
9be5bab37d
drm/omap: remove legacy DSS device operations
...
All DSS devices have been converted to bridge API, so
the device operations are always NULL. This removes
the device ops function pointers and all code using it.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-42-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
af1110cb6f
drm/omap: dsi: Register a drm_bridge
...
In order to integrate with a chain of drm_bridge, the internal DSI
output has to expose its operations through the drm_bridge API.
Register a bridge at initialisation time to do so and remove the
omap_dss_device operations that are now unused.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-41-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
cf64148abc
drm/panel: Move OMAP's DSI command mode panel driver
...
The panel driver is no longer using any OMAP specific APIs, so
let's move it into the generic panel directory.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Cc: Thierry Reding <thierry.reding@gmail.com >
Cc: Sam Ravnborg <sam@ravnborg.org >
Acked-by: Sam Ravnborg <sam@ravnborg.org >
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-40-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
8510148732
drm/omap: remove global dss_device variable
...
We can simply provide the device to the omapdrm driver
via pdata. omapdss_is_initialized() is no longer required
(even before this patch), since omapdrm device is only
registered after the pointer is initialized.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-39-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
5966140422
drm/omap: panel-dsi-cm: fix remove()
...
Do not try to reset the panel after DSI has been
detached, since the DSI clocks may have been disabled
at this point. The panel will be disabled and unprepared
before being removed and a reset will be done when being
probed again.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-38-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
1ecf643f63
drm/omap: panel-dsi-cm: support unbinding
...
Now, that the driver implements the common DRM panel API
the unbind no longer needs to be suppressed.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-37-tomi.valkeinen@ti.com
2020-12-15 16:08:25 +02:00
Sebastian Reichel
1f4e871687
drm/omap: panel-dsi-cm: use DEVICE_ATTR_RO
...
Use DEVICE_ATTR_RO helper instead of plain DEVICE_ATTR,
which makes the code a bit shorter and easier to read.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-36-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
607824315e
drm/omap: dsi: implement check timings
...
Implement check timings, which will check if it's possible to
configure the clocks for the provided mode using the same code
as the set_config() hook.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-35-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
9f2231795b
drm/omap: drop omapdss-boot-init
...
The table of compatible values needed to be prefixed with "omapdss,"
is empty, so all of this code is doing nothing now. Let's drop it.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-34-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
1cac9ba252
drm/omap: dsi: convert to drm_panel
...
This converts the DSI module to expect common drm_panel display
drivers instead of dssdev based ones.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-33-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
e4869b048d
drm/omap: dsi: drop custom panel capability support
...
Due to previous changes the DSI encoder gets the capabilities
via DSI client's mode_flags and no longer needs the omapdss
specific caps. The core code now checks if the DSI encoder
is actually configured into command mode instead of just checking
the panel capabilities.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-32-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
e290c812eb
drm/omap: dsi: Reverse direction of the DSS device enable/disable operations
...
Complete the direction reversal of the DSS device enable/disable
operations started by commit 19b4200d8f ("drm/omap: Reverse direction
of the DSS device enable/disable operations").
This effectively drops the requirement of calling DSS specific
code from the DSI panel driver moving it a bit further to a
standard drm_panel driver.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-31-tomi.valkeinen@ti.com
2020-12-15 16:08:24 +02:00
Sebastian Reichel
2a4703c25f
drm/omap: dsi: move panel refresh function to host
...
This moves the panel refresh/update function from the panel
driver into the DSI host driver to prepare for common drm_panel
support.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-30-tomi.valkeinen@ti.com
2020-12-15 16:08:23 +02:00
Sebastian Reichel
66c6bf3af6
drm/omap: dsi: do ULPS in host driver
...
Move ULPS handling into the DSI host controller, so that we
no longer need a custom API for the DSI client.
Note that for now ULPS is always disabled.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-29-tomi.valkeinen@ti.com
2020-12-15 16:08:23 +02:00
Sebastian Reichel
9f0eb51e3c
drm/omap: dsi: untangle ulps ops from enable/disable
...
Create a custom function pointer for ULPS and use it instead of
reusing disable/enable functions for ULPS mode switch. This allows
us to use the common disable/enable functions pointers for DSI.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-28-tomi.valkeinen@ti.com
2020-12-15 16:08:23 +02:00
Sebastian Reichel
0c93a61db4
drm/omap: dsi: do bus locking in host driver
...
This moves the bus locking into the host driver and unexports
the custom API in preparation for drm_panel support.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-27-tomi.valkeinen@ti.com
2020-12-15 16:08:23 +02:00
Sebastian Reichel
e9c7a0d713
drm/omap: dsi: drop custom enable_te() API
...
Instead of using the custom enable_te() API, this automatically
enables/disables TE core support when a matching packet is sent
to the panel.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-26-tomi.valkeinen@ti.com
2020-12-15 16:08:23 +02:00
Sebastian Reichel
4c1b935fea
drm/omap: dsi: move TE GPIO handling into core
...
In preparation for removing custom DSS calls from the DSI
panel driver, this moves support for external tearing event
GPIOs into the DSI host driver. This way tearing events are
always handled in the core resulting in simplification of
the panel drivers.
The TE GPIO acquisition follows works in the same way as the
exynos DSI implementation.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-25-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
3220034b12
drm/omap: dsi: lp/hs switching support for transfer()
...
Integrate low-power / high-speed bus switching into transfer
function and drop the omapdrm specific enable_hs() callback.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-24-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
61714cd309
drm/omap: panel-dsi-cm: use bulk regulator API
...
Use bulk regulator API to simplify the code. This also switches
from _optional variant to normal variant, which will provide a
dummy regulator (i.e. if some always-enabled regulator is not
described in DT).
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-23-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
68ca91d7d8
drm/omap: dsi: use pixel-format and mode from attach
...
In order to reduce the amount of custom functionality, this moves
handling of pixel format and DSI mode from set_config() to dsi
attach.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-22-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
d4b561c376
drm/omap: dsi: drop useless sync()
...
The DSI sync() function only locks the bus and then releases
it again. Currently the only invocation is directly before
update(), which locks the bus anyways.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-21-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
8228cd7ec3
drm/omap: dsi: drop unused enable_te()
...
enable_te() is not used, so the custom API can be dropped.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-20-tomi.valkeinen@ti.com
2020-12-15 16:08:22 +02:00
Sebastian Reichel
e869152d5a
drm/omap: dsi: drop unused get_te()
...
The get_te() callback is not used, so we can drop the
custom API.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-19-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
e94793ee8e
drm/omap: dsi: drop unused memory_read()
...
memory_read is not used, so we can drop the code.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-18-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
7c5662babf
drm/omap: panel-dsi-cm: use common MIPI DCS 1.3 defines
...
Drop local definition of common MIPI DCS 1.3 defines.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-17-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
ea83647d5e
drm/omap: panel-dsi-cm: drop hardcoded VC
...
Use dsi->channel everywhere, which originates from DT.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-16-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
a5f2dcdebd
drm/omap: dsi: request VC via mipi_dsi_attach
...
Drop custom request_vc/release_vc callbacks by using the
generic mipi_dsi_attach/mipi_dsi_detach functions.
To use mipi_dsi_attach() we need to fill in the mipi_dsi_device fields,
and some of these fields overlap with the fields in omap_dss_dsi_config.
In later patches the latter will get dropped.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-15-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
d4cf153728
drm/omap: panel-dsi-cm: use DSI helpers
...
After converting the driver to mipi_dsi_device we can use the generic
message helpers to simplify the driver a lot.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-14-tomi.valkeinen@ti.com
2020-12-15 16:08:21 +02:00
Sebastian Reichel
9cd8782952
drm/omap: dsi: introduce mipi_dsi_host
...
This moves from custom platform driver infrastructure to mipi_dsi_host
and mipi_dsi_device. Note, that this is a graduate step and the driver
only uses the devices types and transfer function, but not yet the new
device binding style or drm_panel.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-13-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
1ed6253856
drm/omap: dsi: switch dsi_vc_send_long/short to mipi_dsi_msg
...
Simplify the DSI encoder by using mipi_dsi_msg for
dsi_vc_send_long and dsi_vc_send_short. Further improvements
require cleaning up the channel allocation code first.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-12-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
952545a23a
drm/omap: dsi: simplify read functions
...
Simplify the read related message handling by using the functionality
provided by CONFIG_DRM_MIPI_DSI.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-11-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
e709653863
drm/omap: dsi: simplify write function
...
Simplify the write related messages handling by using the functionality
provided by CONFIG_DRM_MIPI_DSI.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-10-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
28d72874f8
drm/omap: dsi: drop virtual channel logic
...
This drops the virtual channel logic. Afterwards DSI clients
request their channel number and get the virtual channel with
the same number or -EBUSY if already in use.
The change here is not strictly speaking correct, as it combines the VC
(DSI's "configuration block") and virtual channel ID (the ID sent in the
DSI packets). But as we currently only support a single DSI command mode
panel, this works fine: we always use VC0, and VC ID 0.
This needs more work to support video mode panels, but that can be done
after moving to DRM bridge and panel model, after which we can do that
work with the proper APIs.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-9-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
ccc2f2ae66
drm/omap: dsi: unexport specific data transfer functions
...
After converting all DSI drivers, unexport the specific transfer
functions.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-8-tomi.valkeinen@ti.com
2020-12-15 16:08:20 +02:00
Sebastian Reichel
fc3413a9b4
drm/omap: panel-dsi-cm: convert to transfer API
...
This converts the panel-dsi-cm driver to use the transfer
API instead of specific functions, so that the specific
functions can be unexported and squashed into the generic
transfer function.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-7-tomi.valkeinen@ti.com
2020-12-15 16:08:19 +02:00
Sebastian Reichel
9e8d3b92c2
drm/omap: dsi: add generic transfer function
...
This prepares the driver for becoming a mipi_dsi_host implementation,
which provides a generic transfer function instead of all kind of
different read/write functions. The implementation will become more
elegant after unexporting the specific functions in the following
patches.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-6-tomi.valkeinen@ti.com
2020-12-15 16:08:19 +02:00
Sebastian Reichel
ee0c365c9e
drm/omap: constify write buffers
...
The write buffers are not modified, so they can be constant.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-5-tomi.valkeinen@ti.com
2020-12-15 16:08:19 +02:00
Sebastian Reichel
d0103cebe1
drm/omap: dsi: use MIPI_DSI_FMT_* instead of OMAP_DSS_DSI_FMT_*
...
This replaces OMAP specific enum for pixel format with
common implementation.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-4-tomi.valkeinen@ti.com
2020-12-15 16:08:16 +02:00
Sebastian Reichel
a29cc43c2c
drm/omap: drop unused dsi.configure_pins
...
The panel-dsi-cm's ddata->pin_config is always NULL, so this
callback is never called. Instead the DSI encoder gets the pin
configuration directly from DT.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-3-tomi.valkeinen@ti.com
2020-12-15 16:07:28 +02:00
Sebastian Reichel
12db515bae
Revert "drm/omap: dss: Remove unused omap_dss_device operations"
...
This reverts commit e086558ae9 ("drm/omap: dss: Remove unused
omap_dss_device operations")
This is still needed by DSI. E.g. unloading modules without this will
cause a crash.
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215104657.802264-2-tomi.valkeinen@ti.com
2020-12-15 16:07:28 +02:00
Jyri Sarha
64ff189118
drm/omap: Enable COLOR_ENCODING and COLOR_RANGE properties for planes
...
Adds support for COLOR_ENCODING and COLOR_RANGE properties to
omap_plane.c and dispc.c. The supported encodings and ranges are
presets are:
For COLOR_ENCODING:
- YCbCr BT.601 (default)
- YCbCr BT.709
For COLOR_RANGE:
- YCbCr limited range
- YCbCr full range (default)
Signed-off-by: Jyri Sarha <jsarha@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201103080310.164453-6-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Tomi Valkeinen
1bea53df4d
drm/omap: rearrange includes in omapdss.h
...
Drop "uapi/" and rearrange alphabetically.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201103080310.164453-5-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Jyri Sarha
f18f43992e
drm/omap: Implement CTM property for CRTC using OVL managers CPR matrix
...
Implement CTM color management property for OMAP CRTC using DSS
overlay manager's Color Phase Rotation matrix. The CPR matrix does not
exactly match the CTM property documentation. On DSS the CPR matrix is
applied after gamma table look up. However, it seems stupid to add a
custom property just for that.
Signed-off-by: Jyri Sarha <jsarha@ti.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201103080310.164453-4-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Tomi Valkeinen
3fcd70c9a5
drm/omap: use degamma property for gamma table
...
omapdrm supports gamma via GAMMA_LUT property. However, the HW we have
is:
gamma -> ctm -> out
instead of what the model DRM framework uses:
ctm -> gamma -> out
As the following patches add CTM support for omapdrm, lets first fix the
gamma.
This patch changes the property from GAMMA_LUT to DEGAMMA_LUT, and thus
we will have:
degamma -> ctm -> out
and the legacy ioctl will continue working as before.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201103080310.164453-3-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Tomi Valkeinen
1b89774346
drm: add legacy support for using degamma for gamma
...
The DRM core handles legacy gamma-set ioctl by setting GAMMA_LUT and
clearing CTM and DEGAMMA_LUT.
This works fine on HW where we have either:
degamma -> ctm -> gamma -> out
or
ctm -> gamma -> out
However, if the HW has gamma table before ctm, the atomic property
should be DEGAMMA_LUT, and thus we have:
degamma -> ctm -> out
This is fine for userspace which sets gamma table using the properties,
as the userspace can check for the existence of gamma & degamma, but the
legacy gamma-set ioctl does not work.
Change the DRM core to use DEGAMMA_LUT instead of GAMMA_LUT when the
latter is unavailable.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201211114237.213288-3-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Tomi Valkeinen
6ca2ab8086
drm: automatic legacy gamma support
...
To support legacy gamma ioctls the drivers need to set
drm_crtc_funcs.gamma_set either to a custom implementation or to
drm_atomic_helper_legacy_gamma_set. Most of the atomic drivers do the
latter.
We can simplify this by making the core handle it automatically.
Move the drm_atomic_helper_legacy_gamma_set() functionality into
drm_color_mgmt.c to make drm_mode_gamma_set_ioctl() use
drm_crtc_funcs.gamma_set if set or GAMMA_LUT property if not.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com >
Reviewed-by: Philippe Cornu <philippe.cornu@st.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20201211114237.213288-2-tomi.valkeinen@ti.com
2020-12-15 15:46:03 +02:00
Zqiang
5c0e4110f7
udlfb: Fix memory leak in dlfb_usb_probe
...
The dlfb_alloc_urb_list function is called in dlfb_usb_probe function,
after that if an error occurs, the dlfb_free_urb_list function need to
be called.
BUG: memory leak
unreferenced object 0xffff88810adde100 (size 32):
comm "kworker/1:0", pid 17, jiffies 4294947788 (age 19.520s)
hex dump (first 32 bytes):
10 30 c3 0d 81 88 ff ff c0 fa 63 12 81 88 ff ff .0........c.....
00 30 c3 0d 81 88 ff ff 80 d1 3a 08 81 88 ff ff .0........:.....
backtrace:
[<0000000019512953>] kmalloc include/linux/slab.h:552 [inline]
[<0000000019512953>] kzalloc include/linux/slab.h:664 [inline]
[<0000000019512953>] dlfb_alloc_urb_list drivers/video/fbdev/udlfb.c:1892 [inline]
[<0000000019512953>] dlfb_usb_probe.cold+0x289/0x988 drivers/video/fbdev/udlfb.c:1704
[<0000000072160152>] usb_probe_interface+0x177/0x370 drivers/usb/core/driver.c:396
[<00000000a8d6726f>] really_probe+0x159/0x480 drivers/base/dd.c:554
[<00000000c3ce4b0e>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
[<00000000e942e01c>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844
[<00000000de0a5a5c>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:431
[<00000000463fbcb4>] __device_attach+0x122/0x250 drivers/base/dd.c:912
[<00000000b881a711>] bus_probe_device+0xc6/0xe0 drivers/base/bus.c:491
[<00000000364bbda5>] device_add+0x5ac/0xc30 drivers/base/core.c:2936
[<00000000eecca418>] usb_set_configuration+0x9de/0xb90 drivers/usb/core/message.c:2159
[<00000000edfeca2d>] usb_generic_driver_probe+0x8c/0xc0 drivers/usb/core/generic.c:238
[<000000001830872b>] usb_probe_device+0x5c/0x140 drivers/usb/core/driver.c:293
[<00000000a8d6726f>] really_probe+0x159/0x480 drivers/base/dd.c:554
[<00000000c3ce4b0e>] driver_probe_device+0x84/0x100 drivers/base/dd.c:738
[<00000000e942e01c>] __device_attach_driver+0xee/0x110 drivers/base/dd.c:844
[<00000000de0a5a5c>] bus_for_each_drv+0xb7/0x100 drivers/base/bus.c:431
Reported-by: syzbot+c9e365d7f450e8aa615d@syzkaller.appspotmail.com
Signed-off-by: Zqiang <qiang.zhang@windriver.com >
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch >
Link: https://patchwork.freedesktop.org/patch/msgid/20201215063022.16746-1-qiang.zhang@windriver.com
2020-12-15 13:44:14 +01:00
Tian Tao
c855af2f9c
drm/hisilicon: Fix use-after-free
...
Fix the problem of dev being released twice.
------------[ cut here ]------------
refcount_t: underflow; use-after-free.
WARNING: CPU: 75 PID: 15700 at lib/refcount.c:28 refcount_warn_saturate+0xd4/0x150
CPU: 75 PID: 15700 Comm: rmmod Tainted: G E 5.10.0-rc3+ #3
Hardware name: Huawei TaiShan 200 (Model 2280)/BC82AMDDA, BIOS 0.88 07/24/2019
pstate: 40400009 (nZcv daif +PAN -UAO -TCO BTYPE=--)
pc : refcount_warn_saturate+0xd4/0x150
lr : refcount_warn_saturate+0xd4/0x150
sp : ffff2028150cbc00
x29: ffff2028150cbc00 x28: ffff2028150121c0
x27: 0000000000000000 x26: 0000000000000000
x25: 0000000000000000 x24: 0000000000000003
x23: 0000000000000000 x22: ffff2028150cbc90
x21: ffff2020038a30a8 x20: ffff2028150cbc90
x19: ffff0020cd938020 x18: 0000000000000010
x17: 0000000000000000 x16: 0000000000000000
x15: ffffffffffffffff x14: ffff2028950cb88f
x13: ffff2028150cb89d x12: 0000000000000000
x11: 0000000005f5e0ff x10: ffff2028150cb800
x9 : 00000000ffffffd0 x8 : 75203b776f6c6672
x7 : ffff800011a6f7c8 x6 : 0000000000000001
x5 : 0000000000000000 x4 : 0000000000000000
x3 : 0000000000000000 x2 : ffff202ffe2f9dc0
x1 : ffffa02fecf40000 x0 : 0000000000000026
Call trace:
refcount_warn_saturate+0xd4/0x150
devm_drm_dev_init_release+0x50/0x70
devm_action_release+0x20/0x30
release_nodes+0x13c/0x218
devres_release_all+0x80/0x170
device_release_driver_internal+0x128/0x1f0
driver_detach+0x6c/0xe0
bus_remove_driver+0x74/0x100
driver_unregister+0x34/0x60
pci_unregister_driver+0x24/0xd8
hibmc_pci_driver_exit+0x14/0xe858 [hibmc_drm]
__arm64_sys_delete_module+0x1fc/0x2d0
el0_svc_common.constprop.3+0xa8/0x188
do_el0_svc+0x80/0xa0
el0_sync_handler+0x8c/0xb0
el0_sync+0x15c/0x180
CPU: 75 PID: 15700 Comm: rmmod Tainted: G E 5.10.0-rc3+ #3
Hardware name: Huawei TaiShan 200 (Model 2280)/BC82AMDDA, BIOS 0.88 07/24/2019
Call trace:
dump_backtrace+0x0/0x208
show_stack+0x2c/0x40
dump_stack+0xd8/0x10c
__warn+0xac/0x128
report_bug+0xcc/0x180
bug_handler+0x24/0x78
call_break_hook+0x80/0xa0
brk_handler+0x28/0x68
do_debug_exception+0x9c/0x148
el1_sync_handler+0x7c/0x128
el1_sync+0x80/0x100
refcount_warn_saturate+0xd4/0x150
devm_drm_dev_init_release+0x50/0x70
devm_action_release+0x20/0x30
release_nodes+0x13c/0x218
devres_release_all+0x80/0x170
device_release_driver_internal+0x128/0x1f0
driver_detach+0x6c/0xe0
bus_remove_driver+0x74/0x100
driver_unregister+0x34/0x60
pci_unregister_driver+0x24/0xd8
hibmc_pci_driver_exit+0x14/0xe858 [hibmc_drm]
__arm64_sys_delete_module+0x1fc/0x2d0
el0_svc_common.constprop.3+0xa8/0x188
do_el0_svc+0x80/0xa0
el0_sync_handler+0x8c/0xb0
el0_sync+0x15c/0x180
---[ end trace 00718630d6e5ff18 ]---
Signed-off-by: Tian Tao <tiantao6@hisilicon.com >
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Link: https://patchwork.freedesktop.org/patch/msgid/1607941973-32287-1-git-send-email-tiantao6@hisilicon.com
2020-12-15 05:49:21 -05:00
Maxime Ripard
f3c420fe19
drm/vc4: kms: Convert to atomic helpers
...
Now that the semaphore is gone, our atomic_commit implementation is
basically drm_atomic_helper_commit with a somewhat custom commit_tail,
the main difference being that we're using wait_for_flip_done instead of
wait_for_vblanks used in the drm_atomic_helper_commit_tail helper.
Let's switch to using drm_atomic_helper_commit.
Acked-by: Thomas Zimmermann <tzimmermann@suse.de >
Signed-off-by: Maxime Ripard <maxime@cerno.tech >
Link: https://patchwork.freedesktop.org/patch/msgid/20201204151138.1739736-8-maxime@cerno.tech
2020-12-15 11:36:13 +01:00