Geert Uytterhoeven
1399ebacbf
drm: renesas: shmobile: Add DT support
...
Add DT support, by:
1. Creating a panel bridge from DT, and attaching it to the encoder,
2. Replacing the custom connector with a bridge connector,
3. Obtaining clock configuration based on the compatible value.
Note that for now the driver uses a fixed clock configuration selecting
the bus clock, as the current code to select other clock inputs needs
changes to support any other SoCs than SH7724.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/6185ab76aa300fa402e4f6610b2109665f2d8a1c.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:48 +02:00
Geert Uytterhoeven
b2b2f7ba8f
drm: renesas: shmobile: Atomic conversion part 3
...
Complete the conversion to atomic mode setting by converting the
connector, and setting the DRIVER_ATOMIC flag.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/042f9ff076c4b1c87235c74c8b76c9d161e126ec.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:48 +02:00
Geert Uytterhoeven
7c2d79f06e
drm: renesas: shmobile: Remove internal CRTC state tracking
...
Now the suspend/resume methods no longer need to look at internal driver
state, the dpms and started fields in the shmob_drm_crtc structure can
be removed, as well as the shmob_drm_crtc_dpms() wrapper. After this,
shmob_drm_crtc_atomic_{en,dis}able() became just wrappers around
shmob_drm_crtc_st{art,op}(), so inline the latter.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/905b9ca72f43d40438c8cb1199cde140eb123204.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
cc2c954668
drm: renesas: shmobile: Use suspend/resume helpers
...
Replace the custom suspend/resume handling by calls into
drm_mode_config_helper_{suspend,resume}().
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/a52147ca6033e0a59675f37f0326c7404fc5919c.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
e3c8898b38
drm: renesas: shmobile: Atomic conversion part 2
...
Implement atomic mode setting for the CRTC, using the existing dpms
callback.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/ca2a00200ef5ac899a6131087d0a30de1c806119.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
4afa041043
drm: renesas: shmobile: Atomic conversion part 1
...
Implement atomic mode setting for both the primary and overlay planes.
This involves:
- Moving the primary plane handling code from CRTC mode setting to
plane handling shared by primary and overlay planes,
- Adding basic CRTC and mode config atomic mode setting ops, which
don't do much yet.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/a6b698a1c8c1eaf631c2f928f5888ab5fe7aa4c3.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
22a4414594
drm: renesas: shmobile: Cleanup encoder
...
Most unused callbacks can be NULL pointers these days.
Drop a bunch of empty encoder callbacks.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/04f186573e1df90ecc051272f3d1cbe564c3469b.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
c285aac128
drm: renesas: shmobile: Turn vblank on/off when enabling/disabling CRTC
...
The DRM core vblank handling mechanism requires drivers to forcefully
turn vblank reporting off when disabling the CRTC, and to restore the
vblank reporting status when enabling the CRTC.
Implement this using the drm_crtc_vblank_{on,off}() helpers.
Note that drm_crtc_vblank_off() must be called at startup to synchronize
the state of the vblank core code with the hardware, which is initially
disabled. This is performed at CRTC creation time, requiring vertical
blank initialization to be moved before creating CRTCs.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/e5833e5706b7792bfca8e6e56fc154a7c3e0574f.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
b1ce7fe4c4
drm: renesas: shmobile: Wait for page flip when turning CRTC off
...
Turning a CRTC off will prevent a queued page flip from ever completing,
potentially confusing userspace. Wait for queued page flips to complete
before turning the CRTC off to avoid this.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/c97d5859c43fa36043c61de28d67688ebe345092.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:47 +02:00
Geert Uytterhoeven
a87e3159d4
drm: renesas: shmobile: Move shmob_drm_crtc_finish_page_flip()
...
Move the shmob_drm_crtc_finish_page_flip() function up, to avoid having
to move it during the modification in the next change.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/4c87bb31403d142f8f146176cb859a10a28a3601.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
9d7bd3b12e
drm: renesas: shmobile: Rename shmob_drm_connector.connector
...
Rename the "connector" member of the shmob_drm_connector subclass
structure to "base", to improve readability.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/2382c4c796b53b5d2b24f99b85954ce632f21b90.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
5195532484
drm: renesas: shmobile: Rename shmob_drm_crtc.crtc
...
Rename the "crtc" member of the shmob_drm_crtc subclass structure to
"base", to improve readability.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/b42a32082d25bde6db7a57d8dc0d9f45820f6716.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
c228823426
drm: renesas: shmobile: Unify plane allocation
...
Unify primary and overlay plane allocation:
- Enhance shmob_drm_plane_create() so it can be used to create the
primary plane, too,
- Move overlay plane creation next to primary plane creation.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/adbc5febc0099fd1910f32a7af1c8e0f570f74b4.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
adceac2cf1
drm: renesas: shmobile: Move interface handling to connector setup
...
Move legacy interface handling to the connector setup code.
Set up bus_flags and bus_formats in display_info according to the
bus format and panel information from platform data, to make it more
similar with DT-based connector/bridge/panel setup.
This will allow us to use the same LCD interface setup code for both
legacy and DT-based systems.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/912f615eb87c847804a268200ab57c63453c65d4.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Laurent Pinchart
6a6ab0c716
drm: renesas: shmobile: Use struct videomode in platform data
...
Replace the drm_mode_modeinfo field with videomode that includes more
signal polarity flags. This simplifies driver handling of panel modes
and prepares for DT support.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
[geert: Simplify]
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/4312e56de424d94399c6105e7159317eae86c9d5.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:46 +02:00
Geert Uytterhoeven
c2e938ee9a
drm: renesas: shmobile: Replace .dev_private with container_of()
...
Now that drm_device is embedded in shmob_drm_device, we can use
a container_of()-based helper to get the shmob_drm_device pointer from
the drm_device, instead of using the deprecated drm_device.dev_private
field.
While at it, restore reverse Xmas tree ordering of local variable
declarations.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/8ef4be8bffe75efc7f4b66f3732ec357f7d43e0f.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:45 +02:00
Geert Uytterhoeven
02e6c5b76f
drm: renesas: shmobile: Convert container helpers to static inline functions
...
Replace to conversion helper macros using container_of() by static
inline functions, to improve type-safety.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/7d1f1aa4b832499f9e527353ce0ad6d84ff9a74a.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:45 +02:00
Geert Uytterhoeven
5417750d5e
drm: renesas: shmobile: Embed drm_device in shmob_drm_device
...
Embedding drm_device in shmob_drm_device allows us to use the DRM
managed API to allocate both structures in one go, simplifying error
handling.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/abbf95021191824f44cc8c52e4afbde93d44363a.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:45 +02:00
Laurent Pinchart
04ed052f3a
drm: renesas: shmobile: Remove support for SYS panels
...
SYS panels are not used, and have no defined DT bindings. Remove their
support to avoid impeding DT support. It can always be added back
later.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/4ccca2a5ac05c73ea9fd6e44b8bc443fd9d14e0d.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:45 +02:00
Laurent Pinchart
76b1405832
drm: renesas: shmobile: Don't set display info width and height twice
...
The display info width_mm and height_mm fields are set at init time and
never overwritten, don't set them a second time when getting modes.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Reviewed-by: Sui Jingfeng <suijingfeng@loongson.cn >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/edd49fcb92af83d81df655b3db1685e8ed14380a.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:44 +02:00
Laurent Pinchart
0da28d5fc8
drm: renesas: shmobile: Remove backlight support
...
Backlight support should be implemented by panels, not by the LCDC
driver. As the feature is currently unused anyway, remove it.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
[geert: Cleanups]
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/69707650245bc2193d072f24723d4d5482ea590b.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:44 +02:00
Geert Uytterhoeven
7802ca6b23
drm: renesas: shmobile: Improve shmob_drm_format_info table
...
Improve the table containing hardware information related to the
supported plane formats:
1. Move (part of) the overlay format register settings from multiple
switch() statements spread across the code into the table, like is
already done for the primary plane register settings,
2. Remove the .yuv field, as that information can easily be extracted
from the register settings using a new helper macro,
3. Shrink and move the .bpp field to reduce table size.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/b41f755e80ffe5fb4adbb2d8f96f2073de5c33bc.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:44 +02:00
Geert Uytterhoeven
02e6e3c2fa
drm: renesas: shmobile: Add missing YCbCr formats
...
The primary plane supports various YCbCr formats, and the CRTC code
already knows how to handle them. Enable support for the missing
formats by adding them to the table of supported modes.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/e5a5d5ab2083280be5fcdc428e8b8ca198b4448d.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:44 +02:00
Geert Uytterhoeven
616f73c9d3
drm: renesas: shmobile: Add support for Runtime PM
...
The SH-Mobile LCD Controller is part of a PM Domain on all relevant SoCs
(clock domain on all, power domain on some). Hence it may not be
sufficient to manage the LCDC module clock explicitly (e.g. if the
selected clock source differs from SHMOB_DRM_CLK_BUS).
Fix this by using Runtime PM for all clock handling. Add an explicit
dependency on CONFIG_PM, which should already be met on all affected
platforms.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/e7359a64963bd9a4f1531c2beae850774ce140bc.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:43 +02:00
Geert Uytterhoeven
b25064ef99
drm: renesas: shmobile: Correct encoder/connector types
...
The first encoder output on the SH-Mobile LCD Controller is a DPI
parallel bus. However, at the time of introduction of the driver, no
encoder or connector types were defined yet for the DPI parallel bus,
hence the driver used the ones for LVDS instead.
Adjust the types accordingly.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be >
Link: https://lore.kernel.org/r/db500dd8356955d3471a1ccd68d90db9f9750ef9.1694767209.git.geert+renesas@glider.be
2023-10-16 11:47:43 +02:00
Biju Das
11696c5e89
drm: Place Renesas drivers in a separate dir
...
Create vendor specific renesas directory and move renesas drivers
to that directory.
Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com >
Acked-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com >
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com >
2023-05-29 16:41:03 +03:00