Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp4368559imm; Mon, 14 May 2018 06:38:59 -0700 (PDT) X-Google-Smtp-Source: AB8JxZos1p/8crfqYl7yIooMpN5sI6wmNERZend+YEWJs8a52B2sfiUO/p5jAs8VMizcXKwNa2EB X-Received: by 2002:a17:902:6a89:: with SMTP id n9-v6mr10013091plk.41.1526305139739; Mon, 14 May 2018 06:38:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526305139; cv=none; d=google.com; s=arc-20160816; b=dxqxnKrzsbT+4J5Ug/mO8SoFF/I1qtidAH4V/ocW3RLPUN+ALKy/AbAHYXmjRStKHQ C/vWAzqF6Z1+ELdt7Pw0Z79mC6Yv0XebKWNyZvUksqaLU4HB8/zu1lLCfUI8tgc6KKYG WgAof4wws0PQYABJQWs2dNnaukm8wn2Ucs2RR9WZxzb8Lh2OuU9fJBHNLglJBi7zNQEK vxycx6KgU7sOKhaLu5Z07WRbjitB4gegiEKvVLVgpV65mMx88L950t8mCz+t1s9HWglR acRHRwA4iIp8JTDPPpQ12v8LYlnxPGECJuN5neXU208prKy1LFS/U6jiItTeCUjuPX3u ZzLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=+JdMtvYoYWJamhCNt5mn4cgwERrPxsBZfawr84OwSDE=; b=QIMq8v+QDvl9MeKLD/KJYhRaZCgAHLtUJBkYPj5lqRqnHKo04rBGXov30Ybnz7O7QT LZ4s7ztJxCuzMdUXIDmJo5ootaSf6OrluGn7BPdar0B9qDnHU/CGhD4+W530gacHB7nk 4BuucJNyyWZZFS0VUIVWhCIPJbnvCwbhSA+kQgifxHjmnHAjmot7xUOrPHQ3FOaCeb++ m2PyISmy8MnesehU7Ry4JRx3J5puYkefpnxYZyRJYUUjcY5+T6En7koLepFu5pbLmMT+ PN5lWxlgl13n5W4wLRzd9vru6/TOqvBT5b2z7cZhBKkfJMK7YqLjcHeqwyd34/QZexHG e7HA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BR8bmWML; 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b34-v6si9142200pld.272.2018.05.14.06.38.44; Mon, 14 May 2018 06:38:59 -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=@kernel.org header.s=default header.b=BR8bmWML; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932356AbeENNhu (ORCPT + 99 others); Mon, 14 May 2018 09:37:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:49380 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932212AbeENNhr (ORCPT ); Mon, 14 May 2018 09:37:47 -0400 Received: from mail-qt0-f178.google.com (mail-qt0-f178.google.com [209.85.216.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 57536217C6; Mon, 14 May 2018 13:37:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1526305066; bh=COtuVzjAW68q1VkBTJy9T6b0YbFBwIqrmXazH7ld80c=; h=In-Reply-To:References:From:Date:Subject:To:Cc:From; b=BR8bmWMLM+0U6bI+5KRnj7guGA4C1t7mX9RXXTHe8XxEiMordBL3hFebEsqyNNBg8 RGscMIJgFJo8OrQAtwKqQDXW4VOIL6MVkaAjFlY8vDEieQE3m338m2Xu2kWuGa7hgU jp8TD+Pflq5fB1ds7RwdZHzXnDGiCggGmFSk3V1A= Received: by mail-qt0-f178.google.com with SMTP id h2-v6so16094169qtp.7; Mon, 14 May 2018 06:37:46 -0700 (PDT) X-Gm-Message-State: ALKqPwcNq51360K+k7m1v+dU7M3y1jx3qs/oGPeY4bhsFM1s7DGkRRJS CdP26Arjni2oMNkXUc4vVacHx0PmsAQ8dXI3SQ== X-Received: by 2002:a0c:aa9a:: with SMTP id f26-v6mr8900286qvb.106.1526305065389; Mon, 14 May 2018 06:37:45 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.155.2 with HTTP; Mon, 14 May 2018 06:37:24 -0700 (PDT) In-Reply-To: <20180511162028.20616-11-brgl@bgdev.pl> References: <20180511162028.20616-1-brgl@bgdev.pl> <20180511162028.20616-11-brgl@bgdev.pl> From: Rob Herring Date: Mon, 14 May 2018 08:37:24 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 10/12] platform/early: implement support for early platform drivers To: Bartosz Golaszewski Cc: Sekhar Nori , Kevin Hilman , David Lechner , Michael Turquette , Stephen Boyd , Arnd Bergmann , Greg Kroah-Hartman , Mark Rutland , Yoshinori Sato , Rich Felker , Andy Shevchenko , Marc Zyngier , "Rafael J . Wysocki" , Peter Rosin , Jiri Slaby , Thomas Gleixner , Daniel Lezcano , Geert Uytterhoeven , Magnus Damm , Johan Hovold , Frank Rowand , "moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" , "linux-kernel@vger.kernel.org" , devicetree@vger.kernel.org, "open list:GENERIC INCLUDE/ASM HEADER FILES" , Bartosz Golaszewski Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 11, 2018 at 11:20 AM, Bartosz Golaszewski wrote: > From: Bartosz Golaszewski > > This introduces the core part of support for early platform drivers > and devices. > It looks like most of your prep patches are to separate the alloc and init of platform devices because you are essentially making early devices/drivers a sub-class. Maybe you could avoid doing that and simplify things a bit. Comments below based on doing that... > +/** > + * struct early_platform_driver > + * > + * @pdrv: real platform driver associated with this early platform driver > + * @list: list head for the list of early platform drivers > + * @early_probe: early probe callback > + */ > +struct early_platform_driver { > + struct platform_driver pdrv; > + struct list_head list; Couldn't you use an existing list in driver_private until you move over to the normal bus infra. > + int (*early_probe)(struct platform_device *); Just add this to platform_driver. > +}; > + > +/** > + * struct early_platform_device > + * > + * @pdev: real platform device associated with this early platform device > + * @list: list head for the list of early platform devices > + * @deferred: true if this device's early probe was deferred > + * @deferred_drv: early platform driver with which this device was matched > + */ > +struct early_platform_device { > + struct platform_device pdev; > + struct list_head list; Use a list in device_private? > + bool deferred; > + struct early_platform_driver *deferred_drv; Can't you use the existing deferred probe list? Rob