From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759925AbdEOI1y (ORCPT ); Mon, 15 May 2017 04:27:54 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:44365 "EHLO mailout4.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758808AbdEOI1w (ORCPT ); Mon, 15 May 2017 04:27:52 -0400 MIME-version: 1.0 Content-type: text/plain; charset=utf-8 X-AuditID: cbfec7f2-f797e6d000004438-8e-591966847f2d Subject: Re: [PATCH v3 2/6] drm: Add drm_{crtc/encoder/connector}_mode_valid() To: Jose Abreu , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Carlos Palminha , Alexey Brodkin , =?UTF-8?B?VmlsbGUgU3lyasOkbMOk?= , Daniel Vetter , Dave Airlie , Archit Taneja From: Andrzej Hajda Message-id: <1f5053b3-e05c-a46d-3a6c-9e0104c49bcc@samsung.com> Date: Mon, 15 May 2017 10:27:46 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 In-reply-to: <6bebd65e34642151552c15f300948c5edf83f84e.1494492646.git.joabreu@synopsys.com> Content-transfer-encoding: 8bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrEKsWRmVeSWpSXmKPExsWy7djPc7otaZKRBr+7zSx6z51kslj39TaT RVPHW1aLWfseslosfHiX2eLK1/dsFvf+fGC1uLxrDpvF938LmRw4PS739TJ57P22gMVj+7cH rB7zTgZ63O8+zuSxZf9nRo/Pm+QC2KO4bFJSczLLUov07RK4Mra83c5UsEWhonf+UeYGxl9S XYycHBICJhKLb8xmhLDFJC7cW8/WxcjFISSwlFHi/pI5zCAJIYHPjBLHTkrCNCyYu5wFomgZ o8Sj7fPZQBK8AoISPybfYwGxmQU0JV58mcQC0fyMUeLJ5gIQW1ggQOLnz3Vg20QEMiX+P/7N DjKIWWAGk8TNroPsIAk2oOa/m29CDbWTeNlwFMxmEVCVmHzpKCuILSoQIXF9zhagQRwcnAKx EtdfhkHslZc4eOU5C8Shx9glZi9PBSmREJCV2HSAGSLsInGgfxvUw8ISr45vYYewZSQ6Ow4y gZwjIdDNKPGp/wQ7hDOFUeLfhxlQ3dYSh49fZIVYxicxadt0ZogFvBIdbUIQJR4SfVtvsEKE HSX27WaChNUdYBjuO8sygVF+FlJwzUIKrllIXljAyLyKUSS1tDg3PbXYWK84Mbe4NC9dLzk/ dxMjMOWc/nf80w7GryesDjEKcDAq8fAmXJaIFGJNLCuuzD3EKMHBrCTCuyBKMlKINyWxsiq1 KD++qDQntfgQozQHi5I4L9epaxFCAumJJanZqakFqUUwWSYOTqkGxvxvFb2xgemfttxefaXO 51RA3/9581kOhEp35j9X53N/zrVJN6ts3v/fivcytbUXLbju1bYkap2Xo8e6C8x5HPG+oWum N28pXVe9jjU24p5S+XLGudrLy7VjbZos8ub+e7FCPbNelP2J4rkLSXN75yS15lxm+uH+0bdR 8mrYo2Mnz2VseNC8VomlOCPRUIu5qDgRAImUR4o1AwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCIsWRmVeSWpSXmKPExsVy+t/xy7qS6ZKRBtceWVn0njvJZLHu620m i6aOt6wWs/Y9ZLVY+PAus8WVr+/ZLO79+cBqcXnXHDaL7/8WMjlwelzu62Xy2PttAYvH9m8P WD3mnQz0uN99nMljy/7PjB6fN8kFsEe52WSkJqakFimk5iXnp2TmpdsqhYa46VooKeQl5qba KkXo+oYEKSmUJeaUAnlGBmjAwTnAPVhJ3y7BLWPL2+1MBVsUKnrnH2VuYPwl1cXIySEhYCKx YO5yFghbTOLCvfVsXYxcHEICSxglXj+dDZbgFRCU+DH5HpDNwcEsoC4xZUouRM0zRom10y+w g9QIC/hJnGpcwwhiiwhkSjR9ucwKUXSHUeJF5ykWEIdZYBaTxJZ9b5lAqtgENCX+br7JBrHB TuJlw1Ewm0VAVWLypaOsILaoQITEw85dYBs4BWIlpl3uBLOZBeQlDl55zjKBUWAWkgNnIRw4 C0nVAkbmVYwiqaXFuem5xYZ6xYm5xaV56XrJ+bmbGIExuO3Yz807GC9tDD7EKMDBqMTDu+Oq RKQQa2JZcWXuIUYJDmYlEd4FUZKRQrwpiZVVqUX58UWlOanFhxhNgW6dyCwlmpwPTA95JfGG JobmloZGxhYW5kZGSuK8JR+uhAsJpCeWpGanphakFsH0MXFwSjUwmiYr8cfUzjnoGfWV+2f2 fduUFJE2dkN7Ce7IC0+vfphs5Sj/ZXdh1PEfW748NZc2fFx04moid7pI0ZTN77XNrrwSqH0V YX38md+56Y2eFf/Trt8QF5gu/6+ia297HZOkqdihXSlBv1svbG0vlK45fik6Mmj1/d9dKSlX PxXEWphv27HpXcozJZbijERDLeai4kQAB9o3Y9cCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170515082748eucas1p251ad577584526f3dfb904d0f577312aa X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRvsgrw=?= =?UTF-8?B?7ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?QW5kcnplaiBIYWpkYRtTUlBPTC1LZXJuZWwgKFRQKRtTYW1z?= =?UTF-8?B?dW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170511090646epcas1p33d66a53af5b75b79335757ca98998739 X-RootMTR: 20170511090646epcas1p33d66a53af5b75b79335757ca98998739 References: <6bebd65e34642151552c15f300948c5edf83f84e.1494492646.git.joabreu@synopsys.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11.05.2017 11:05, Jose Abreu wrote: > Add a new helper to call crtc->mode_valid, connector->mode_valid > and encoder->mode_valid callbacks. > > Suggested-by: Ville Syrjälä > Signed-off-by: Jose Abreu > Cc: Carlos Palminha > Cc: Alexey Brodkin > Cc: Ville Syrjälä > Cc: Daniel Vetter > Cc: Dave Airlie > Cc: Andrzej Hajda > Cc: Archit Taneja > --- > Changes v2->v3: > - Move helpers to drm_probe_helper.c (Daniel) > - Squeeze patches that introduce the helpers into a single > one (Daniel) > > drivers/gpu/drm/drm_crtc_helper_internal.h | 13 ++++++++++ > drivers/gpu/drm/drm_probe_helper.c | 38 ++++++++++++++++++++++++++++++ > 2 files changed, 51 insertions(+) > > diff --git a/drivers/gpu/drm/drm_crtc_helper_internal.h b/drivers/gpu/drm/drm_crtc_helper_internal.h > index 28295e5..97dfe20 100644 > --- a/drivers/gpu/drm/drm_crtc_helper_internal.h > +++ b/drivers/gpu/drm/drm_crtc_helper_internal.h > @@ -26,7 +26,11 @@ > * implementation details and are not exported to drivers. > */ > > +#include > +#include > #include > +#include > +#include > > /* drm_fb_helper.c */ > #ifdef CONFIG_DRM_FBDEV_EMULATION > @@ -62,4 +66,13 @@ static inline int drm_dp_aux_register_devnode(struct drm_dp_aux *aux) > static inline void drm_dp_aux_unregister_devnode(struct drm_dp_aux *aux) > { > } > + > +/* drm_probe_helper.c */ > +enum drm_mode_status drm_crtc_mode_valid(struct drm_crtc *crtc, > + const struct drm_display_mode *mode); > +enum drm_mode_status drm_encoder_mode_valid(struct drm_encoder *encoder, > + const struct drm_display_mode *mode); > +enum drm_mode_status drm_connector_mode_valid(struct drm_connector *connector, > + struct drm_display_mode *mode); > + > #endif > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 1b0c14a..f01abdc 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -38,6 +38,9 @@ > #include > #include > #include > +#include > + > +#include "drm_crtc_helper_internal.h" > > /** > * DOC: output probing helper overview > @@ -113,6 +116,41 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector) > return 1; > } > > +enum drm_mode_status drm_crtc_mode_valid(struct drm_crtc *crtc, > + const struct drm_display_mode *mode) > +{ > + const struct drm_crtc_helper_funcs *crtc_funcs = crtc->helper_private; > + > + if (!crtc_funcs || !crtc_funcs->mode_valid) > + return MODE_OK; > + > + return crtc_funcs->mode_valid(crtc, mode); > +} > + > +enum drm_mode_status drm_encoder_mode_valid(struct drm_encoder *encoder, > + const struct drm_display_mode *mode) > +{ > + const struct drm_encoder_helper_funcs *encoder_funcs = > + encoder->helper_private; > + > + if (!encoder_funcs || !encoder_funcs->mode_valid) > + return MODE_OK; > + > + return encoder_funcs->mode_valid(encoder, mode); > +} > + > +enum drm_mode_status drm_connector_mode_valid(struct drm_connector *connector, > + struct drm_display_mode *mode) > +{ > + const struct drm_connector_helper_funcs *connector_funcs = > + connector->helper_private; > + > + if (!connector_funcs || !connector_funcs->mode_valid) > + return MODE_OK; > + > + return connector_funcs->mode_valid(connector, mode); > +} > + "Copy/Paste" as the main generic programming technique in C :) I guess clever/scary macro wouldn't be an option. Anyway: Reviewed-by: Andrzej Hajda -- Regards Andrzej > #define DRM_OUTPUT_POLL_PERIOD (10*HZ) > /** > * drm_kms_helper_poll_enable - re-enable output polling.