From: Alexandre Courbot <acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> To: Ben Skeggs <bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>, nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Terje Bergstrom <tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>, Ken Adams <KAdams-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>, Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>, Eric Brower <ebrower-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>, linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Alexandre Courbot <acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Subject: [RFC 03/16] drm/nouveau: add platform device probing function Date: Sat, 1 Feb 2014 12:16:45 +0900 [thread overview] Message-ID: <1391224618-3794-4-git-send-email-acourbot@nvidia.com> (raw) In-Reply-To: <1391224618-3794-1-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> Add a nouveau_drm_platform_probe() function that probes a Nouveau platform device and registers it using drm_platform_init(). Signed-off-by: Alexandre Courbot <acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> --- drivers/gpu/drm/nouveau/core/engine/device/base.c | 34 ++++++++++++++++++++++ .../gpu/drm/nouveau/core/include/engine/device.h | 10 +++++++ drivers/gpu/drm/nouveau/nouveau_drm.c | 19 ++++++++++++ 3 files changed, 63 insertions(+) diff --git a/drivers/gpu/drm/nouveau/core/engine/device/base.c b/drivers/gpu/drm/nouveau/core/engine/device/base.c index a6abb51..ba6c2f2 100644 --- a/drivers/gpu/drm/nouveau/core/engine/device/base.c +++ b/drivers/gpu/drm/nouveau/core/engine/device/base.c @@ -543,3 +543,37 @@ done: mutex_unlock(&nv_devices_mutex); return ret; } + +int +nouveau_device_platform_create_(struct platform_device *pdev, u64 name, + const char *sname, const char *cfg, + const char *dbg, int length, void **pobject) +{ + struct nouveau_device *device; + int ret = -EEXIST; + + mutex_lock(&nv_devices_mutex); + list_for_each_entry(device, &nv_devices, head) { + if (device->handle == name) + goto done; + } + + ret = nouveau_engine_create_(NULL, NULL, &nouveau_device_oclass, true, + "DEVICE", "device", length, pobject); + device = *pobject; + if (ret) + goto done; + + device->platformdev = pdev; + device->handle = name; + device->cfgopt = cfg; + device->dbgopt = dbg; + device->name = sname; + + nv_subdev(device)->debug = nouveau_dbgopt(device->dbgopt, "DEVICE"); + nv_engine(device)->sclass = nouveau_device_sclass; + list_add(&device->head, &nv_devices); +done: + mutex_unlock(&nv_devices_mutex); + return ret; +} diff --git a/drivers/gpu/drm/nouveau/core/include/engine/device.h b/drivers/gpu/drm/nouveau/core/include/engine/device.h index b3dd2c4..90056190 100644 --- a/drivers/gpu/drm/nouveau/core/include/engine/device.h +++ b/drivers/gpu/drm/nouveau/core/include/engine/device.h @@ -3,12 +3,22 @@ #include <core/device.h> +struct platform_device; + #define nouveau_device_create(p,n,s,c,d,u) \ nouveau_device_create_((p), (n), (s), (c), (d), sizeof(**u), (void **)u) int nouveau_device_create_(struct pci_dev *, u64 name, const char *sname, const char *cfg, const char *dbg, int, void **); +#define nouveau_device_platform_create(p,n,s,c,d,u) \ + nouveau_device_platform_create_((p), (n), (s), (c), (d), sizeof(**u), \ + (void **)u) + +int nouveau_device_platform_create_(struct platform_device *pdev, u64 name, + const char *sname, const char *cfg, + const char *dbg, int, void **); + int nv04_identify(struct nouveau_device *); int nv10_identify(struct nouveau_device *); int nv20_identify(struct nouveau_device *); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 4cba4d8..8d55a50 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -986,6 +986,25 @@ nouveau_drm_pci_driver = { .driver.pm = &nouveau_pm_ops, }; + +int nouveau_drm_platform_probe(struct platform_device *pdev) +{ + struct nouveau_device *device; + int ret; + + ret = nouveau_device_platform_create(pdev, nouveau_platform_name(pdev), + dev_name(&pdev->dev), nouveau_config, + nouveau_debug, &device); + + ret = drm_platform_init(&driver, pdev); + if (ret) { + nouveau_object_ref(NULL, (struct nouveau_object **)&device); + return ret; + } + + return ret; +} + static int __init nouveau_drm_init(void) { -- 1.8.5.3
WARNING: multiple messages have this Message-ID (diff)
From: Alexandre Courbot <acourbot@nvidia.com> To: Ben Skeggs <bskeggs@redhat.com>, nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Terje Bergstrom <tbergstrom@nvidia.com>, Ken Adams <KAdams@nvidia.com>, Thierry Reding <thierry.reding@gmail.com>, Stephen Warren <swarren@wwwdotorg.org>, Eric Brower <ebrower@nvidia.com>, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, gnurou@gmail.com, Alexandre Courbot <acourbot@nvidia.com> Subject: [RFC 03/16] drm/nouveau: add platform device probing function Date: Sat, 1 Feb 2014 12:16:45 +0900 [thread overview] Message-ID: <1391224618-3794-4-git-send-email-acourbot@nvidia.com> (raw) In-Reply-To: <1391224618-3794-1-git-send-email-acourbot@nvidia.com> Add a nouveau_drm_platform_probe() function that probes a Nouveau platform device and registers it using drm_platform_init(). Signed-off-by: Alexandre Courbot <acourbot@nvidia.com> --- drivers/gpu/drm/nouveau/core/engine/device/base.c | 34 ++++++++++++++++++++++ .../gpu/drm/nouveau/core/include/engine/device.h | 10 +++++++ drivers/gpu/drm/nouveau/nouveau_drm.c | 19 ++++++++++++ 3 files changed, 63 insertions(+) diff --git a/drivers/gpu/drm/nouveau/core/engine/device/base.c b/drivers/gpu/drm/nouveau/core/engine/device/base.c index a6abb51..ba6c2f2 100644 --- a/drivers/gpu/drm/nouveau/core/engine/device/base.c +++ b/drivers/gpu/drm/nouveau/core/engine/device/base.c @@ -543,3 +543,37 @@ done: mutex_unlock(&nv_devices_mutex); return ret; } + +int +nouveau_device_platform_create_(struct platform_device *pdev, u64 name, + const char *sname, const char *cfg, + const char *dbg, int length, void **pobject) +{ + struct nouveau_device *device; + int ret = -EEXIST; + + mutex_lock(&nv_devices_mutex); + list_for_each_entry(device, &nv_devices, head) { + if (device->handle == name) + goto done; + } + + ret = nouveau_engine_create_(NULL, NULL, &nouveau_device_oclass, true, + "DEVICE", "device", length, pobject); + device = *pobject; + if (ret) + goto done; + + device->platformdev = pdev; + device->handle = name; + device->cfgopt = cfg; + device->dbgopt = dbg; + device->name = sname; + + nv_subdev(device)->debug = nouveau_dbgopt(device->dbgopt, "DEVICE"); + nv_engine(device)->sclass = nouveau_device_sclass; + list_add(&device->head, &nv_devices); +done: + mutex_unlock(&nv_devices_mutex); + return ret; +} diff --git a/drivers/gpu/drm/nouveau/core/include/engine/device.h b/drivers/gpu/drm/nouveau/core/include/engine/device.h index b3dd2c4..90056190 100644 --- a/drivers/gpu/drm/nouveau/core/include/engine/device.h +++ b/drivers/gpu/drm/nouveau/core/include/engine/device.h @@ -3,12 +3,22 @@ #include <core/device.h> +struct platform_device; + #define nouveau_device_create(p,n,s,c,d,u) \ nouveau_device_create_((p), (n), (s), (c), (d), sizeof(**u), (void **)u) int nouveau_device_create_(struct pci_dev *, u64 name, const char *sname, const char *cfg, const char *dbg, int, void **); +#define nouveau_device_platform_create(p,n,s,c,d,u) \ + nouveau_device_platform_create_((p), (n), (s), (c), (d), sizeof(**u), \ + (void **)u) + +int nouveau_device_platform_create_(struct platform_device *pdev, u64 name, + const char *sname, const char *cfg, + const char *dbg, int, void **); + int nv04_identify(struct nouveau_device *); int nv10_identify(struct nouveau_device *); int nv20_identify(struct nouveau_device *); diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c index 4cba4d8..8d55a50 100644 --- a/drivers/gpu/drm/nouveau/nouveau_drm.c +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c @@ -986,6 +986,25 @@ nouveau_drm_pci_driver = { .driver.pm = &nouveau_pm_ops, }; + +int nouveau_drm_platform_probe(struct platform_device *pdev) +{ + struct nouveau_device *device; + int ret; + + ret = nouveau_device_platform_create(pdev, nouveau_platform_name(pdev), + dev_name(&pdev->dev), nouveau_config, + nouveau_debug, &device); + + ret = drm_platform_init(&driver, pdev); + if (ret) { + nouveau_object_ref(NULL, (struct nouveau_object **)&device); + return ret; + } + + return ret; +} + static int __init nouveau_drm_init(void) { -- 1.8.5.3
next prev parent reply other threads:[~2014-02-01 3:16 UTC|newest] Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-02-01 3:16 [RFC 00/16] drm/nouveau: initial support for GK20A (Tegra K1) Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 01/16] drm/nouveau: handle -EACCES runtime PM return code Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 02/16] drm/nouveau: basic support for platform devices Alexandre Courbot 2014-02-01 3:16 ` [RFC 05/16] drm/nouveau/bar: support " Alexandre Courbot 2014-02-01 3:16 ` [RFC 06/16] drm/nouveau/bar: only ioremap BAR3 if it exists Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 07/16] drm/nouveau/bar/nvc0: support chips without BAR3 Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-04 3:54 ` Ben Skeggs [not found] ` <CACAvsv7BDDEOJ-C88PRWy7z21c1LMorb5r=f6atDJAWtTN=Luw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-04 8:31 ` Alexandre Courbot 2014-02-04 8:31 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 08/16] drm/nouveau/mc: support platform devices Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 09/16] drm/nouveau/fb: " Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 10/16] drm/nouveau/timer: skip calibration on GK20A Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-04 3:55 ` Ben Skeggs 2014-02-04 8:39 ` Alexandre Courbot 2014-02-04 8:39 ` Alexandre Courbot 2014-02-05 20:27 ` Stephen Warren 2014-02-05 20:27 ` Stephen Warren [not found] ` <1391224618-3794-1-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2014-02-01 3:16 ` Alexandre Courbot [this message] 2014-02-01 3:16 ` [RFC 03/16] drm/nouveau: add platform device probing function Alexandre Courbot 2014-02-01 3:16 ` [RFC 04/16] drm/nouveau/fifo: support platform devices Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 11/16] drm/nouveau/fifo: allocate usermem as needed Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 12/16] drm/nouveau/fifo: add GK20A support Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot [not found] ` <1391224618-3794-13-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2014-02-04 9:15 ` Daniel Vetter 2014-02-04 9:15 ` Daniel Vetter [not found] ` <20140204091518.GZ17001-dv86pmgwkMBes7Z6vYuT8azUEOm+Xw19@public.gmane.org> 2014-02-05 1:21 ` Alexandre Courbot 2014-02-05 1:21 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 15/16] drm/nouveau: support GK20A in nouveau_accel_init() Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-02 19:10 ` [RFC 00/16] drm/nouveau: initial support for GK20A (Tegra K1) Ilia Mirkin 2014-02-02 19:10 ` Ilia Mirkin 2014-02-02 19:10 ` Ilia Mirkin [not found] ` <CAKb7Uvg4Bqy1tHetVZBe=aekFDbgrGygc-evnSXxsoGqgoTA8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-03 2:44 ` Alexandre Courbot 2014-02-03 2:44 ` Alexandre Courbot [not found] ` <52EF0294.2090103-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2014-02-03 3:14 ` Ilia Mirkin 2014-02-03 3:14 ` Ilia Mirkin [not found] ` <CAKb7UvgSpy7wwpg+Fb8V678DvkrqGdcuciTF136VcktJb9-Wiw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-03 3:41 ` Ben Skeggs 2014-02-03 3:41 ` Ben Skeggs 2014-02-03 3:32 ` Stéphane Marchesin 2014-02-03 17:33 ` Daniel Vetter 2014-02-03 17:33 ` Daniel Vetter 2014-02-04 3:53 ` Ben Skeggs 2014-02-04 3:53 ` Ben Skeggs [not found] ` <CACAvsv4QFSL8u8hQFr-T_28n3icN_CwDsvLtrcPXx5nErD89wQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-04 8:44 ` Alexandre Courbot 2014-02-04 8:44 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 13/16] drm/nouveau/ibus: add GK20A support Alexandre Courbot 2014-02-02 6:35 ` Ilia Mirkin 2014-02-02 6:35 ` Ilia Mirkin [not found] ` <CAKb7Uvh7QTn1m0N6ynVxVup9VdA9y7fKJ66nwUDMiy6aHz+_Uw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-02 9:38 ` Alexandre Courbot 2014-02-02 9:38 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 14/16] drm/nouveau/fb: " Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot [not found] ` <1391224618-3794-15-git-send-email-acourbot-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2014-02-01 13:40 ` Lucas Stach 2014-02-01 13:40 ` Lucas Stach 2014-02-01 23:28 ` Ilia Mirkin 2014-02-01 23:28 ` Ilia Mirkin [not found] ` <CAKb7UvhJWOtxzYMViuoV6fHU4UR_+j1QTKHw1PoQT_+ykenfYw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-01 23:58 ` Lucas Stach 2014-02-01 23:58 ` Lucas Stach [not found] ` <1391299106.2985.3.camel-6fNNZcyRN10Uz2mrYu7PvxC15K8ycFmQs0AfqQuZ5sE@public.gmane.org> 2014-02-02 13:43 ` Alexandre Courbot 2014-02-02 13:43 ` Alexandre Courbot [not found] ` <CAAVeFuLdwoKXsFtcMQ07ozFQXckki86zuB3xNMNk+QbEOtoG0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-07 14:19 ` Alexandre Courbot 2014-02-07 14:19 ` Alexandre Courbot 2014-02-01 3:16 ` [RFC 16/16] drm/nouveau: support for probing GK20A Alexandre Courbot 2014-02-01 3:16 ` Alexandre Courbot 2014-02-03 11:25 ` [RFC 00/16] drm/nouveau: initial support for GK20A (Tegra K1) David Herrmann [not found] ` <CANq1E4R=DWp2WBWWBbLHE2FG9HWWP=bM4wvE8etoEr1PAp0+JA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2014-02-04 2:47 ` Alexandre Courbot 2014-02-04 2:47 ` Alexandre Courbot
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=1391224618-3794-4-git-send-email-acourbot@nvidia.com \ --to=acourbot-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \ --cc=KAdams-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \ --cc=bskeggs-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \ --cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \ --cc=ebrower-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \ --cc=gnurou-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \ --cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \ --cc=tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \ --cc=thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \ /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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.