[PATCH v7 22/24] drm: rockchip: Add VOP2 driver

Andy Yan andy.yan at rock-chips.com
Tue Mar 8 00:42:10 PST 2022


Hi Daniel:

On 3/7/22 21:09, Daniel Stone wrote:
> Hi Andy,
>
> On Mon, 7 Mar 2022 at 12:18, Andy Yan <andy.yan at rock-chips.com> wrote:
>> On 2/25/22 15:51, Sascha Hauer wrote:
>>> The VOP2 unit is found on Rockchip SoCs beginning with rk3566/rk3568.
>>> It replaces the VOP unit found in the older Rockchip SoCs.
>>>
>>> This driver has been derived from the downstream Rockchip Kernel and
>>> heavily modified:
>>>
>>> - All nonstandard DRM properties have been removed
>>> - dropped struct vop2_plane_state and pass around less data between
>>>     functions
>>> - Dropped all DRM_FORMAT_* not known on upstream
>>> - rework register access to get rid of excessively used macros
>>> - Drop all waiting for framesyncs
>>>
>>> The driver is tested with HDMI and MIPI-DSI display on a RK3568-EVB
>>> board. Overlay support is tested with the modetest utility. AFBC support
>>> on the cluster windows is tested with weston-simple-dmabuf-egl on
>>> weston using the (yet to be upstreamed) panfrost driver support.
>> When run a weston 10.0.0:
>>
>>    # export XDG_RUNTIME_DIR=/tmp
>>    # weston --backend=drm-backend.so --use-pixma --tty=2
>> --continue=without-input
>>
>> I got the following error:
>>
>> drm_atomic_check_only [PLANE:31:Smart0-win0] CRTC set but no FB
> Can you please start Weston with --logger-scopes=log,drm-backend and
> attach the output?

Please see the weston ouput here[0]


This failed is from   drm_atom_plane_check: both CRTC and FB must be set 
or neither.

static int drm_atomic_plane_check(const struct drm_plane_state 
*old_plane_state,
                                   const struct drm_plane_state 
*new_plane_state)
{
         struct drm_plane *plane = new_plane_state->plane;
         struct drm_crtc *crtc = new_plane_state->crtc;
         const struct drm_framebuffer *fb = new_plane_state->fb;
         unsigned int fb_width, fb_height;
         struct drm_mode_rect *clips;
         uint32_t num_clips;
         int ret;

         /* either *both* CRTC and FB must be set, or neither */
         if (crtc && !fb) {
                 drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] CRTC set but 
no FB\n",
                                plane->base.id, plane->name);
                 return -EINVAL;
         } else if (fb && !crtc) {
                 drm_dbg_atomic(plane->dev, "[PLANE:%d:%s] FB set but no 
CRTC\n",
                                plane->base.id, plane->name);
                 return -EINVAL;
         }

[0]https://pastebin.com/mGXKqD2S

> Cheers,
> Daniel



More information about the Linux-rockchip mailing list