Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756306AbcK2Iuh (ORCPT ); Tue, 29 Nov 2016 03:50:37 -0500 Received: from mail-wj0-f194.google.com ([209.85.210.194]:34598 "EHLO mail-wj0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753904AbcK2Iua (ORCPT ); Tue, 29 Nov 2016 03:50:30 -0500 Date: Tue, 29 Nov 2016 09:50:24 +0100 From: Daniel Vetter To: Neil Armstrong Cc: airlied@linux.ie, khilman@baylibre.com, carlo@caione.org, Xing.Xu@amlogic.com, victor.wan@amlogic.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jerry.cao@amlogic.com, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org Subject: Re: [RFC PATCH 1/3] drm: Add support for Amlogic Meson Graphic Controller Message-ID: <20161129085024.tqf5takulvv7f34x@phenom.ffwll.local> Mail-Followup-To: Neil Armstrong , airlied@linux.ie, khilman@baylibre.com, carlo@caione.org, Xing.Xu@amlogic.com, victor.wan@amlogic.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jerry.cao@amlogic.com, linux-amlogic@lists.infradead.org, linux-arm-kernel@lists.infradead.org References: <1480089791-12517-1-git-send-email-narmstrong@baylibre.com> <1480089791-12517-2-git-send-email-narmstrong@baylibre.com> <20161128081601.wapare3pyzmzghvp@phenom.ffwll.local> <99e71b1b-b0cc-ec54-6ca9-417d20195aca@baylibre.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <99e71b1b-b0cc-ec54-6ca9-417d20195aca@baylibre.com> X-Operating-System: Linux phenom 4.8.0-1-amd64 User-Agent: NeoMutt/20161104 (1.7.1) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2062 Lines: 52 Hi Neil, On Mon, Nov 28, 2016 at 10:34:58AM +0100, Neil Armstrong wrote: > On 11/28/2016 09:16 AM, Daniel Vetter wrote: > > On Fri, Nov 25, 2016 at 05:03:09PM +0100, Neil Armstrong wrote: > >> +static void meson_cvbs_encoder_disable(struct drm_encoder *encoder) > >> +{ > >> + struct meson_cvbs *meson_cvbs = encoder_to_meson_cvbs(encoder); > >> + > >> + meson_venci_cvbs_disable(meson_cvbs->priv); > >> +} > >> + > >> +static void meson_cvbs_encoder_enable(struct drm_encoder *encoder) > >> +{ > >> + struct meson_cvbs *meson_cvbs = encoder_to_meson_cvbs(encoder); > >> + > >> + meson_venci_cvbs_enable(meson_cvbs->priv); > >> +} > > > > Personally I'd remove the indirection above, more direct code is easier to > > read. > > I understand, I'll maybe change the meson_venci_cvbs_XXable to be > directly added to the ops. > > I want to keep the registers setup in separate files and keep a clean > DRM/HW separation. I figured this is worth clarifying, and I'm somewhat guessing at your motivation here for a clean drm/hw split. There's of course various levels of how much you can split the drm side from your hw backend, but in general that design approach is really unpopular with upstream. It goes by the name of "midlayer", and the trouble with it is that it makes subsystem refactoring more complicated. For the driver itself it's nice, because it isolates you a bit from drm core. But that exact isolation is the problem when someone wants (or more often, needs to) refactor something across the entire subsystem. Then all these driver-private little (or sometimes much bigger) abstractions get in the way. That's way I suggested to remove it (both here and in the plane code), because for upstream the overall subsystem matters more than each individual driver. GPUs change fast, we need to be able to adapt fast, too. Anyway you're driver's pretty small, so personally I don't mind much. I'd still think removing the indirection would be better though. Thanks, Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch