LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Bartosz Golaszewski <brgl@bgdev.pl> To: Sekhar Nori <nsekhar@ti.com>, Kevin Hilman <khilman@kernel.org>, David Lechner <david@lechnology.com>, Michael Turquette <mturquette@baylibre.com>, Stephen Boyd <sboyd@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Mark Rutland <mark.rutland@arm.com>, Yoshinori Sato <ysato@users.sourceforge.jp>, Rich Felker <dalias@libc.org>, Andy Shevchenko <andy.shevchenko@gmail.com>, Marc Zyngier <marc.zyngier@arm.com>, "Rafael J . Wysocki" <rafael.j.wysocki@intel.com>, Peter Rosin <peda@axentia.se>, Jiri Slaby <jslaby@suse.com>, Thomas Gleixner <tglx@linutronix.de>, Daniel Lezcano <daniel.lezcano@linaro.org>, Geert Uytterhoeven <geert@linux-m68k.org>, Magnus Damm <magnus.damm@gmail.com>, Johan Hovold <johan@kernel.org>, Rob Herring <robh+dt@kernel.org>, Frank Rowand <frowand.list@gmail.com> Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, Bartosz Golaszewski <bgolaszewski@baylibre.com> Subject: [PATCH 04/12] platform: provide a separate function for initializing platform devices Date: Fri, 11 May 2018 18:20:20 +0200 [thread overview] Message-ID: <20180511162028.20616-5-brgl@bgdev.pl> (raw) In-Reply-To: <20180511162028.20616-1-brgl@bgdev.pl> From: Bartosz Golaszewski <bgolaszewski@baylibre.com> The early platform driver framework will allocate platform devices using its own internal mechanisms. Provide a function that allows to initialize a platform device object without allocating it. Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> --- drivers/base/platform.c | 24 ++++++++++++++++++++---- include/linux/platform_device.h | 2 ++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 0c53e3e3e5aa..0ba4effb9618 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -252,6 +252,25 @@ static void platform_device_release(struct device *dev) kfree(pa); } +/** + * platform_device_init - initialize a platform device + * @pdev: platform device to initialize + * @name: base name of the device we're adding, NOTE: it's not copied + * @id: instance id + * + * Initiate an already allocated platform device. This routine does not set + * the release device callback. + */ +void platform_device_init(struct platform_device *pdev, + const char *name, int id) +{ + pdev->name = name; + pdev->id = id; + device_initialize(&pdev->dev); + arch_setup_pdev_archdata(pdev); +} +EXPORT_SYMBOL_GPL(platform_device_init); + /** * platform_device_alloc - create a platform device * @name: base name of the device we're adding @@ -267,11 +286,8 @@ struct platform_device *platform_device_alloc(const char *name, int id) pa = kzalloc(sizeof(*pa) + strlen(name) + 1, GFP_KERNEL); if (pa) { strcpy(pa->name, name); - pa->pdev.name = pa->name; - pa->pdev.id = id; - device_initialize(&pa->pdev.dev); + platform_device_init(&pa->pdev, pa->name, id); pa->pdev.dev.release = platform_device_release; - arch_setup_pdev_archdata(&pa->pdev); } return pa ? &pa->pdev : NULL; diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 099aaf804b50..46bfd5ff666f 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h @@ -165,6 +165,8 @@ static inline struct platform_device *platform_device_register_data( NULL, 0, data, size); } +extern void platform_device_init(struct platform_device *pdev, + const char *name, int id); extern struct platform_device *platform_device_alloc(const char *name, int id); extern int platform_device_add_resources(struct platform_device *pdev, const struct resource *res, -- 2.17.0
next prev parent reply other threads:[~2018-05-11 16:24 UTC|newest] Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-11 16:20 [PATCH 00/12] introduce support for early platform drivers Bartosz Golaszewski 2018-05-11 16:20 ` [PATCH 01/12] platform/early: add a new field to struct device Bartosz Golaszewski 2018-05-14 21:24 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 02/12] platform/early: don't WARN() on non-empty devres list for early devices Bartosz Golaszewski 2018-05-14 21:24 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 03/12] platform/early: export platform_match() locally Bartosz Golaszewski 2018-05-14 21:25 ` Geert Uytterhoeven 2018-05-11 16:20 ` Bartosz Golaszewski [this message] 2018-05-14 21:25 ` [PATCH 04/12] platform: provide a separate function for initializing platform devices Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 05/12] platform: export platform_device_release() locally Bartosz Golaszewski 2018-05-14 21:25 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 06/12] of: add a new flag for OF device nodes Bartosz Golaszewski 2018-05-14 21:25 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 07/12] of/platform: provide a separate routine for setting up device resources Bartosz Golaszewski 2018-05-14 21:26 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 08/12] of/platform: provide a separate routine for device initialization Bartosz Golaszewski 2018-05-14 21:26 ` Geert Uytterhoeven 2018-05-11 16:20 ` [PATCH 09/12] platform/early: add an init section for early driver data Bartosz Golaszewski 2018-05-14 21:29 ` Geert Uytterhoeven 2018-05-15 8:41 ` Bartosz Golaszewski 2018-05-11 16:20 ` [PATCH 10/12] platform/early: implement support for early platform drivers Bartosz Golaszewski 2018-05-14 13:37 ` Rob Herring 2018-05-15 14:06 ` Bartosz Golaszewski 2018-05-16 1:06 ` Rob Herring 2018-05-11 16:20 ` [PATCH 11/12] misc: implement a dummy early platform driver Bartosz Golaszewski 2018-05-11 16:20 ` [PATCH 12/12] of/platform: make the OF code aware of early platform drivers Bartosz Golaszewski 2018-05-14 21:32 ` Geert Uytterhoeven 2018-05-11 20:13 ` [PATCH 00/12] introduce support for " Rob Herring 2018-05-14 11:38 ` Bartosz Golaszewski 2018-05-14 13:20 ` Rob Herring 2018-05-30 19:40 ` Michael Turquette 2018-05-30 22:36 ` Rob Herring 2018-05-31 6:42 ` Geert Uytterhoeven 2018-05-31 14:16 ` Tony Lindgren 2018-10-19 12:08 ` Bartosz Golaszewski
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180511162028.20616-5-brgl@bgdev.pl \ --to=brgl@bgdev.pl \ --cc=andy.shevchenko@gmail.com \ --cc=arnd@arndb.de \ --cc=bgolaszewski@baylibre.com \ --cc=dalias@libc.org \ --cc=daniel.lezcano@linaro.org \ --cc=david@lechnology.com \ --cc=devicetree@vger.kernel.org \ --cc=frowand.list@gmail.com \ --cc=geert@linux-m68k.org \ --cc=gregkh@linuxfoundation.org \ --cc=johan@kernel.org \ --cc=jslaby@suse.com \ --cc=khilman@kernel.org \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=magnus.damm@gmail.com \ --cc=marc.zyngier@arm.com \ --cc=mark.rutland@arm.com \ --cc=mturquette@baylibre.com \ --cc=nsekhar@ti.com \ --cc=peda@axentia.se \ --cc=rafael.j.wysocki@intel.com \ --cc=robh+dt@kernel.org \ --cc=sboyd@kernel.org \ --cc=tglx@linutronix.de \ --cc=ysato@users.sourceforge.jp \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).