Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933143AbbBDJcC (ORCPT ); Wed, 4 Feb 2015 04:32:02 -0500 Received: from v1ros.org ([109.234.34.72]:38280 "EHLO smtp.v1ros.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753786AbbBDJb5 convert rfc822-to-8bit (ORCPT ); Wed, 4 Feb 2015 04:31:57 -0500 Date: Wed, 4 Feb 2015 12:30:38 +0300 From: Roman Volkov To: Dmitry Torokhov Cc: Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Grant Likely , Hans de Goede , Jiri Kosina , Wolfram Sang , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Roman Volkov , Tony Prisk Subject: Re: [PATCH 4/5] i8042: Prepare i8042 driver for DT support Message-ID: <20150204123038.3fb7e6e1@v1ron-s7> In-Reply-To: <20150203193835.GC20256@dtor-ws> References: <1422913730-12663-1-git-send-email-v1ron@v1ros.org> <1422913730-12663-4-git-send-email-v1ron@v1ros.org> <20150203193835.GC20256@dtor-ws> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-unknown-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2255 Lines: 50 В Tue, 3 Feb 2015 11:38:35 -0800 Dmitry Torokhov пишет: > On Tue, Feb 03, 2015 at 12:48:49AM +0300, Roman Volkov wrote: > > Use platform_device_probe() instead of platform_create_bundle() when > > compiled with DT support, since the latter function is not suitable > > for handling the OF device tree. > > > > The order of initialization is changed, since i8042_platform_init() > > for DT requires initialized platform_device structure. To avoid > > searching of the compatible node twice, the platform_device > > structure pointer must be passed to the i8042_platform_init() > > function right after initialization by platform_device_probe(). > > > > Signed-off-by: Tony Prisk > > Signed-off-by: Roman Volkov > > --- > > > > Yes, many of these ifdefs look ugly. Suggestions on how to avoid > > this are welcome (except using of_find_compatible_node() for > > searching the node twice before calling the probe function). > > I guess we need to split the dirver into part that create platform > device and the standard driver part. Then your OF code can supply most > of the needed data via resources/platform data. Yes, it is a larger > change, but the current splat of ifdefs makes my eyes water. > > Thanks. > Dmitry, could you describe this in details? Currently there is platform_create_bundle() function in the driver that is not acceptable to be used with OF (it creates additional device). This function must be replaced with platform_driver_probe() and it is all that common between various architectures and can be the "standard" part of the driver. The difference is in device creation between OF case and, for example, x86 case. Here is a chicken-and-egg problem that needs to be solved, if we try to make the code consistent between various platforms. The problem is that i8042_platform_init() expected to be called first, but at this point DT version requires platform_device structure pointer. Regards, Roman. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/