Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp4081850imc; Thu, 14 Mar 2019 11:51:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqzU5kmy6UR+COylwksgZAQZ/FqbbOjGuNG99OhPkrB8E8udaCsc3YjdOzUxr+XQDkdcYJH0 X-Received: by 2002:a63:e615:: with SMTP id g21mr19404462pgh.362.1552589480368; Thu, 14 Mar 2019 11:51:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552589480; cv=none; d=google.com; s=arc-20160816; b=DKjr4TlmIiIXtfRwZIasUDKfuh5RN3e4JSeMR3Ox1ny4Wz/hg+2+ZWXbEMSIakoZfj Apyg7Vbq/43XmbdegLjym171YI8sdgQo4SWdpG2kU6IUuTHKVUX3mPfCLjlTdy+RyzBv FVkhDsUUBvthYM+OptDzLCP3cciyJRLp79YRCQ8Pste6hgr8QUxzj4cHnLyUOzrWkXtq 0nC4X4+/K6L6NCJF5lTEqlNRtU97Qzg0BeWstWcJ1mipkqDFiSSZvBDOmlwo6gQX2BOO fslw5Vnl6EqsEAOh1g3+BTOXg6Y6ehQOC3eQ8hx10svDg8FzP9dYzo9QULw5DVHdu+mL 2nmw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:content-disposition :mime-version:message-id:subject:cc:to:from:date:dkim-signature; bh=8cM79lmLd/ECaJiKfKdj2dQxFYEDPHOyvVSsOhDFry8=; b=D+zCFZ39lBoQMk/wG3Xi6RCn/pOX+HGCcOfiDfI1vHV4gD5g/rhgHCVlXCoF6+QOsZ BOkD682izTP43nGAaNZ02RvHiNkwWPYfti6XBjYE6+1NjQojBFytHV4HbTHkHIYJMD5l gcd90hMl+Y1x0naXBTLSbezHQqquLtUHryyivdKVp1hFdT7/2VYy8fSX0Ww3g/b/6dhO wNGtXeh/i7gWNtKBX6nudLKrClAAtauM7zgu2/Gji0cbHHKSmOlA5Xk/eDae7r5ptt75 fNQ2rzs264o11aFIfU2pTT/iXYz2FxFyLGB0fPQ1XTDg3YYgFW9WB88BvmXMBw4A3al+ lxmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Utd2BA6X; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r27si13410511pgl.316.2019.03.14.11.51.05; Thu, 14 Mar 2019 11:51:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Utd2BA6X; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727598AbfCNSsv (ORCPT + 99 others); Thu, 14 Mar 2019 14:48:51 -0400 Received: from mail-qt1-f193.google.com ([209.85.160.193]:44644 "EHLO mail-qt1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727034AbfCNSsu (ORCPT ); Thu, 14 Mar 2019 14:48:50 -0400 Received: by mail-qt1-f193.google.com with SMTP id d2so7269647qti.11 for ; Thu, 14 Mar 2019 11:48:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:mime-version:content-disposition :user-agent; bh=8cM79lmLd/ECaJiKfKdj2dQxFYEDPHOyvVSsOhDFry8=; b=Utd2BA6XENNVHrWhIbBeXCShQSo9xKdm8WX38mB+ar02fi6zzTTqsSsO0ltygm883m +8eGc+d+XVChiLGVNZdNVbpk1Ta5F5q6S96iOeFowMS9Eav40WLNQpOHHhUHYftTrvGY lAc2XEXxVp72V90VkrXIQj6ijRNn4ditOYXuQSYI4hFuwWlYFkTs0vsWBCNZcK8IrYtb xHAEzoLV+GKHhVPmR3hJCbsQV+cG9tUaoXtvoqy0NsIW2rGQO7npVuDMfYcdehsdSj3b iQxOc9RSKzDeWIz/CqaBwjwxr4BrFr3aY+2UtxO+wOuwbMo8H0MmsaqnEUBfhXlwDT2J EXOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition:user-agent; bh=8cM79lmLd/ECaJiKfKdj2dQxFYEDPHOyvVSsOhDFry8=; b=YfSnzJ/BtqimTIb2H9TY4VoD6zBG3mTdzrSbnWCqS29zqvju17eS7idtmi6du+S0dy acSo5ULVNxGE7tws74J9FNfwbzUrVdyqKTPvIaNOgeCsc+OD8TUGInoO8B0F/cVlYwAu TPLpH4WGHktcSwi8cdNEeHmERn5LeTGYWX09lpEdS3/GubdxnsxudtxJIkRQ3G60+xoA Gm0Hid6yx0y9KDXcqpExsdA5PTQiuxdcaD0mGm3u5cIR7Z18JbH6JNDMJ3TpMA48CZ4j bJ8y2jyyfc3tK0PrstRmK9lN2wKBnghF9QeX0RsO5EFr+Y0+ePGdJhxWUMRcn4lTsuiy x+sg== X-Gm-Message-State: APjAAAXHbEkaAeb39BUdMGON/6lF1SEHfJ08LI4y7HP2ovjPH1D8zf9G IO6oeLxDD1AXtsv+Huwzm6wf5grGqME= X-Received: by 2002:ac8:1789:: with SMTP id o9mr41037678qtj.234.1552589329290; Thu, 14 Mar 2019 11:48:49 -0700 (PDT) Received: from smtp.gmail.com ([143.107.45.1]) by smtp.gmail.com with ESMTPSA id l129sm8696028qkb.44.2019.03.14.11.48.46 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 14 Mar 2019 11:48:48 -0700 (PDT) Date: Thu, 14 Mar 2019 15:48:45 -0300 From: Rodrigo Siqueira To: Maarten Lankhorst , Maxime Ripard , Sean Paul , David Airlie , Daniel Vetter , Gerd Hoffmann Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH V2] drm/atomic-helper: Make atomic_enable/disable crtc callbacks optional Message-ID: <20190314184845.gjmvkamobj4dilyp@smtp.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: NeoMutt/20180716 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allow atomic_enable and atomic_disable operations from drm_crtc_helper_funcs struct optional. With this, the target display drivers don't need to define a dummy function if they don't need one. Changes since v2: * Don't make funcs optional * Update kerneldoc for atomic_enable/disable * Replace "if (funcs->atomic_enable)" by "if (funcs->commit)" * Improve commit message Signed-off-by: Rodrigo Siqueira --- drivers/gpu/drm/drm_atomic_helper.c | 5 ++--- include/drm/drm_modeset_helper_vtables.h | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index 540a77a2ade9..d506e13c2945 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -1034,7 +1034,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *old_state) funcs->atomic_disable(crtc, old_crtc_state); else if (funcs->disable) funcs->disable(crtc); - else + else if (funcs->dpms) funcs->dpms(crtc, DRM_MODE_DPMS_OFF); if (!(dev->irq_enabled && dev->num_crtcs)) @@ -1277,10 +1277,9 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev, if (new_crtc_state->enable) { DRM_DEBUG_ATOMIC("enabling [CRTC:%d:%s]\n", crtc->base.id, crtc->name); - if (funcs->atomic_enable) funcs->atomic_enable(crtc, old_crtc_state); - else + else if (funcs->commit) funcs->commit(crtc); } } diff --git a/include/drm/drm_modeset_helper_vtables.h b/include/drm/drm_modeset_helper_vtables.h index cfb7be40bed7..ce4de6b1e444 100644 --- a/include/drm/drm_modeset_helper_vtables.h +++ b/include/drm/drm_modeset_helper_vtables.h @@ -418,6 +418,8 @@ struct drm_crtc_helper_funcs { * Drivers can use the @old_crtc_state input parameter if the operations * needed to enable the CRTC don't depend solely on the new state but * also on the transition between the old state and the new state. + * + * This function is optional. */ void (*atomic_enable)(struct drm_crtc *crtc, struct drm_crtc_state *old_crtc_state); @@ -441,6 +443,8 @@ struct drm_crtc_helper_funcs { * parameter @old_crtc_state which could be used to access the old * state. Atomic drivers should consider to use this one instead * of @disable. + * + * This function is optional. */ void (*atomic_disable)(struct drm_crtc *crtc, struct drm_crtc_state *old_crtc_state); -- 2.21.0