From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752544AbcLGMJz (ORCPT ); Wed, 7 Dec 2016 07:09:55 -0500 Received: from foss.arm.com ([217.140.101.70]:35818 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752328AbcLGMJy (ORCPT ); Wed, 7 Dec 2016 07:09:54 -0500 Date: Wed, 7 Dec 2016 12:09:05 +0000 From: Mark Rutland To: Chris Bostic Cc: robh+dt@kernel.org, linux@armlinux.org.uk, gregkh@linuxfoundation.org, sre@kernel.org, mturquette@baylibre.com, geert+renesas@glider.be, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Jeremy Kerr , joel@jms.id.au, linux-kernel@vger.kernel.org, andrew@aj.id.au, alistair@popple.id.au, benh@kernel.crashing.org, Chris Bostic Subject: Re: [PATCH 05/16] drivers/fsi: Add fake master driver Message-ID: <20161207120905.GD7054@leverpostej> References: <1481069677-53660-1-git-send-email-christopher.lee.bostic@gmail.com> <1481069677-53660-6-git-send-email-christopher.lee.bostic@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1481069677-53660-6-git-send-email-christopher.lee.bostic@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 06, 2016 at 06:14:26PM -0600, Chris Bostic wrote: > From: Jeremy Kerr > > For debugging, add a fake master driver, that only supports reads, > returning a fixed set of data. > +config FSI_MASTER_FAKE > + tristate "Fake FSI master" > + depends on FSI > + ---help--- > + This option enables a fake FSI master driver for debugging. > +endif > +static const struct of_device_id fsi_master_fake_match[] = { > + { .compatible = "ibm,fsi-master-fake" }, > + { }, > +}; NAK. DT should be treated as an ABI, and should describe the HW explicitly. This makes no sense. This is also missing a binding document. Have your module take a module parameter allowing you to bind it to arbitrary devices, or do something like what PCI does where you can bind/unbind arbitrary drivers to devices using sysfs. > + > +static struct platform_driver fsi_master_fake_driver = { > + .driver = { > + .name = "fsi-master-fake", > + .of_match_table = fsi_master_fake_match, > + }, > + .probe = fsi_master_fake_probe, > +}; > + > +static int __init fsi_master_fake_init(void) > +{ > + struct device_node *np; > + > + platform_driver_register(&fsi_master_fake_driver); > + > + for_each_compatible_node(np, NULL, "ibm,fsi-master-fake") > + of_platform_device_create(np, NULL, NULL); As a general note, please use for_each_matching_node in situations like this. That way you can reuse your existing of_device_id table, and not reproduce the string. That said, this is not necessary. The platform driver has an of_match_table, so presumes the parent bus registers children, and hence they should already have platform devices. Thanks, Mark.