From: Jani Nikula <jani.nikula@linux.intel.com> To: Tomas Winkler <tomas.winkler@intel.com>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, Joonas Lahtinen <joonas.lahtinen@linux.intel.com>, Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Alexander Usyskin <alexander.usyskin@intel.com>, intel-gfx@lists.freedesktop.org, Lucas De Marchi <lucas.demarchi@intel.com>, linux-mtd@lists.infradead.org, Tomas Winkler <tomas.winkler@intel.com>, Vitaly Lubart <vitaly.lubart@intel.com> Subject: Re: [RFC PATCH 3/9] drm/i915/spi: add driver for on-die spi device Date: Wed, 17 Feb 2021 12:56:32 +0200 [thread overview] Message-ID: <87blcjarof.fsf@intel.com> (raw) In-Reply-To: <20210216181925.650082-4-tomas.winkler@intel.com> On Tue, 16 Feb 2021, Tomas Winkler <tomas.winkler@intel.com> wrote: > Add the platform driver for i915 on-die spi device, exposed via mfd > framework. > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> > --- > drivers/gpu/drm/i915/Kconfig | 2 + > drivers/gpu/drm/i915/Makefile | 3 + > drivers/gpu/drm/i915/spi/intel_spi_drv.c | 116 +++++++++++++++++++++++ > 3 files changed, 121 insertions(+) > create mode 100644 drivers/gpu/drm/i915/spi/intel_spi_drv.c > > diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig > index abcaa8da45ac..13c870e5878e 100644 > --- a/drivers/gpu/drm/i915/Kconfig > +++ b/drivers/gpu/drm/i915/Kconfig > @@ -27,6 +27,8 @@ config DRM_I915 > select CEC_CORE if CEC_NOTIFIER > select VMAP_PFN > select MFD_CORE > + select MTD Selecting MTD does not seem to be a popular thing to do, which is usually a clue it's probably the wrong thing to do. > + select MTD_PARTITIONED_MASTER > help > Choose this option if you have a system that has "Intel Graphics > Media Accelerator" or "HD Graphics" integrated graphics, > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index 7fa9120feb8d..f209cd541eec 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -299,6 +299,9 @@ endif > obj-$(CONFIG_DRM_I915) += i915.o > obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o > > +obj-m += i915_spi.o And literally nobody does this. > +i915_spi-y := spi/intel_spi_drv.o Time to add a separate Kconfig and Makefile in spi/? BR, Jani. > + > # header test > > # exclude some broken headers from the test coverage > diff --git a/drivers/gpu/drm/i915/spi/intel_spi_drv.c b/drivers/gpu/drm/i915/spi/intel_spi_drv.c > new file mode 100644 > index 000000000000..23261f35b71f > --- /dev/null > +++ b/drivers/gpu/drm/i915/spi/intel_spi_drv.c > @@ -0,0 +1,116 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright(c) 2019-2021, Intel Corporation. All rights reserved. > + */ > +#include <linux/module.h> > +#include <linux/types.h> > +#include <linux/kernel.h> > +#include <linux/string.h> > +#include <linux/io.h> > +#include <linux/device.h> > +#include <linux/slab.h> > +#include <linux/platform_device.h> > +#include <spi/intel_spi.h> Should this have "" instead of <>? > + > +struct i915_spi { > + void __iomem *base; > + size_t size; > + unsigned int nregions; > + struct { > + const char *name; > + u8 id; > + u64 offset; > + u64 size; > + } regions[]; > +}; > + > +static int i915_spi_probe(struct platform_device *platdev) > +{ > + struct resource *bar; > + struct device *device; > + struct i915_spi *spi; > + struct i915_spi_region *regions; > + unsigned int nregions; > + unsigned int i, n; > + size_t size; > + char *name; > + size_t name_size; > + > + device = &platdev->dev; > + > + regions = dev_get_platdata(&platdev->dev); > + if (!regions) { > + dev_err(device, "no regions defined\n"); > + return -ENODEV; > + } > + > + /* count available regions */ > + for (nregions = 0, i = 0; i < I915_SPI_REGIONS; i++) { > + if (regions[i].name) > + nregions++; > + } > + > + if (!nregions) { > + dev_err(device, "no regions defined\n"); > + return -ENODEV; > + } > + > + size = sizeof(*spi) + sizeof(spi->regions[0]) * nregions; > + spi = devm_kzalloc(device, size, GFP_KERNEL); > + if (!spi) > + return -ENOMEM; > + > + spi->nregions = nregions; > + for (n = 0, i = 0; i < I915_SPI_REGIONS; i++) { > + if (regions[i].name) { > + name_size = strlen(dev_name(&platdev->dev)) + > + strlen(regions[i].name) + 2; /* for point */ > + name = devm_kzalloc(device, name_size, GFP_KERNEL); > + if (!name) > + continue; > + snprintf(name, name_size, "%s.%s", > + dev_name(&platdev->dev), regions[i].name); > + spi->regions[n].name = name; > + spi->regions[n].id = i; > + n++; > + } > + } > + > + bar = platform_get_resource(platdev, IORESOURCE_MEM, 0); > + if (!bar) > + return -ENODEV; > + > + spi->base = devm_ioremap_resource(device, bar); > + if (IS_ERR(spi->base)) { > + dev_err(device, "mmio not mapped\n"); > + return PTR_ERR(spi->base); > + } > + > + platform_set_drvdata(platdev, spi); > + > + dev_dbg(device, "i915-spi is bound\n"); > + > + return 0; > +} > + > +static int i915_spi_remove(struct platform_device *platdev) > +{ > + platform_set_drvdata(platdev, NULL); > + > + return 0; > +} > + > +MODULE_ALIAS("platform:i915-spi"); > +static struct platform_driver i915_spi_driver = { > + .probe = i915_spi_probe, > + .remove = i915_spi_remove, > + .driver = { > + .name = "i915-spi", > + }, > +}; > + > +module_platform_driver(i915_spi_driver); > + > +MODULE_LICENSE("GPL and additional rights"); > +MODULE_AUTHOR("Intel Corporation"); > +MODULE_DESCRIPTION("Intel DGFX SPI driver"); -- Jani Nikula, Intel Open Source Graphics Center ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Jani Nikula <jani.nikula@linux.intel.com> To: Tomas Winkler <tomas.winkler@intel.com>, Miquel Raynal <miquel.raynal@bootlin.com>, Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>, Joonas Lahtinen <joonas.lahtinen@linux.intel.com>, Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Alexander Usyskin <alexander.usyskin@intel.com>, intel-gfx@lists.freedesktop.org, Lucas De Marchi <lucas.demarchi@intel.com>, linux-mtd@lists.infradead.org, Tomas Winkler <tomas.winkler@intel.com>, Vitaly Lubart <vitaly.lubart@intel.com> Subject: Re: [Intel-gfx] [RFC PATCH 3/9] drm/i915/spi: add driver for on-die spi device Date: Wed, 17 Feb 2021 12:56:32 +0200 [thread overview] Message-ID: <87blcjarof.fsf@intel.com> (raw) In-Reply-To: <20210216181925.650082-4-tomas.winkler@intel.com> On Tue, 16 Feb 2021, Tomas Winkler <tomas.winkler@intel.com> wrote: > Add the platform driver for i915 on-die spi device, exposed via mfd > framework. > > Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> > Cc: Lucas De Marchi <lucas.demarchi@intel.com> > Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> > --- > drivers/gpu/drm/i915/Kconfig | 2 + > drivers/gpu/drm/i915/Makefile | 3 + > drivers/gpu/drm/i915/spi/intel_spi_drv.c | 116 +++++++++++++++++++++++ > 3 files changed, 121 insertions(+) > create mode 100644 drivers/gpu/drm/i915/spi/intel_spi_drv.c > > diff --git a/drivers/gpu/drm/i915/Kconfig b/drivers/gpu/drm/i915/Kconfig > index abcaa8da45ac..13c870e5878e 100644 > --- a/drivers/gpu/drm/i915/Kconfig > +++ b/drivers/gpu/drm/i915/Kconfig > @@ -27,6 +27,8 @@ config DRM_I915 > select CEC_CORE if CEC_NOTIFIER > select VMAP_PFN > select MFD_CORE > + select MTD Selecting MTD does not seem to be a popular thing to do, which is usually a clue it's probably the wrong thing to do. > + select MTD_PARTITIONED_MASTER > help > Choose this option if you have a system that has "Intel Graphics > Media Accelerator" or "HD Graphics" integrated graphics, > diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile > index 7fa9120feb8d..f209cd541eec 100644 > --- a/drivers/gpu/drm/i915/Makefile > +++ b/drivers/gpu/drm/i915/Makefile > @@ -299,6 +299,9 @@ endif > obj-$(CONFIG_DRM_I915) += i915.o > obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o > > +obj-m += i915_spi.o And literally nobody does this. > +i915_spi-y := spi/intel_spi_drv.o Time to add a separate Kconfig and Makefile in spi/? BR, Jani. > + > # header test > > # exclude some broken headers from the test coverage > diff --git a/drivers/gpu/drm/i915/spi/intel_spi_drv.c b/drivers/gpu/drm/i915/spi/intel_spi_drv.c > new file mode 100644 > index 000000000000..23261f35b71f > --- /dev/null > +++ b/drivers/gpu/drm/i915/spi/intel_spi_drv.c > @@ -0,0 +1,116 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright(c) 2019-2021, Intel Corporation. All rights reserved. > + */ > +#include <linux/module.h> > +#include <linux/types.h> > +#include <linux/kernel.h> > +#include <linux/string.h> > +#include <linux/io.h> > +#include <linux/device.h> > +#include <linux/slab.h> > +#include <linux/platform_device.h> > +#include <spi/intel_spi.h> Should this have "" instead of <>? > + > +struct i915_spi { > + void __iomem *base; > + size_t size; > + unsigned int nregions; > + struct { > + const char *name; > + u8 id; > + u64 offset; > + u64 size; > + } regions[]; > +}; > + > +static int i915_spi_probe(struct platform_device *platdev) > +{ > + struct resource *bar; > + struct device *device; > + struct i915_spi *spi; > + struct i915_spi_region *regions; > + unsigned int nregions; > + unsigned int i, n; > + size_t size; > + char *name; > + size_t name_size; > + > + device = &platdev->dev; > + > + regions = dev_get_platdata(&platdev->dev); > + if (!regions) { > + dev_err(device, "no regions defined\n"); > + return -ENODEV; > + } > + > + /* count available regions */ > + for (nregions = 0, i = 0; i < I915_SPI_REGIONS; i++) { > + if (regions[i].name) > + nregions++; > + } > + > + if (!nregions) { > + dev_err(device, "no regions defined\n"); > + return -ENODEV; > + } > + > + size = sizeof(*spi) + sizeof(spi->regions[0]) * nregions; > + spi = devm_kzalloc(device, size, GFP_KERNEL); > + if (!spi) > + return -ENOMEM; > + > + spi->nregions = nregions; > + for (n = 0, i = 0; i < I915_SPI_REGIONS; i++) { > + if (regions[i].name) { > + name_size = strlen(dev_name(&platdev->dev)) + > + strlen(regions[i].name) + 2; /* for point */ > + name = devm_kzalloc(device, name_size, GFP_KERNEL); > + if (!name) > + continue; > + snprintf(name, name_size, "%s.%s", > + dev_name(&platdev->dev), regions[i].name); > + spi->regions[n].name = name; > + spi->regions[n].id = i; > + n++; > + } > + } > + > + bar = platform_get_resource(platdev, IORESOURCE_MEM, 0); > + if (!bar) > + return -ENODEV; > + > + spi->base = devm_ioremap_resource(device, bar); > + if (IS_ERR(spi->base)) { > + dev_err(device, "mmio not mapped\n"); > + return PTR_ERR(spi->base); > + } > + > + platform_set_drvdata(platdev, spi); > + > + dev_dbg(device, "i915-spi is bound\n"); > + > + return 0; > +} > + > +static int i915_spi_remove(struct platform_device *platdev) > +{ > + platform_set_drvdata(platdev, NULL); > + > + return 0; > +} > + > +MODULE_ALIAS("platform:i915-spi"); > +static struct platform_driver i915_spi_driver = { > + .probe = i915_spi_probe, > + .remove = i915_spi_remove, > + .driver = { > + .name = "i915-spi", > + }, > +}; > + > +module_platform_driver(i915_spi_driver); > + > +MODULE_LICENSE("GPL and additional rights"); > +MODULE_AUTHOR("Intel Corporation"); > +MODULE_DESCRIPTION("Intel DGFX SPI driver"); -- Jani Nikula, Intel Open Source Graphics Center _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2021-02-17 10:58 UTC|newest] Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-02-16 18:19 [RFC PATCH 0/9] drm/i915/spi: discrete graphics internal spi Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 1/9] drm/i915/spi: add spi device for discrete graphics Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-17 10:42 ` Jani Nikula 2021-02-17 10:42 ` [Intel-gfx] " Jani Nikula 2021-02-17 17:14 ` Lucas De Marchi 2021-02-17 17:14 ` [Intel-gfx] " Lucas De Marchi 2021-02-17 19:02 ` Winkler, Tomas 2021-02-17 19:02 ` [Intel-gfx] " Winkler, Tomas 2021-02-16 18:19 ` [RFC PATCH 2/9] drm/i915/spi: intel_spi_region map Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-17 10:46 ` Jani Nikula 2021-02-17 10:46 ` [Intel-gfx] " Jani Nikula 2021-02-17 20:45 ` Winkler, Tomas 2021-02-17 20:45 ` [Intel-gfx] " Winkler, Tomas 2021-02-22 10:17 ` Jani Nikula 2021-02-22 10:17 ` [Intel-gfx] " Jani Nikula 2021-02-22 11:30 ` Winkler, Tomas 2021-02-22 11:30 ` [Intel-gfx] " Winkler, Tomas 2021-02-16 18:19 ` [RFC PATCH 3/9] drm/i915/spi: add driver for on-die spi device Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-17 10:56 ` Jani Nikula [this message] 2021-02-17 10:56 ` Jani Nikula 2021-02-17 20:58 ` Winkler, Tomas 2021-02-17 20:58 ` [Intel-gfx] " Winkler, Tomas 2021-02-18 9:49 ` Lucas De Marchi 2021-02-18 9:49 ` Lucas De Marchi 2021-02-18 10:50 ` Winkler, Tomas 2021-02-18 10:50 ` Winkler, Tomas 2021-02-19 6:06 ` Winkler, Tomas 2021-02-19 6:06 ` Winkler, Tomas 2021-02-19 22:59 ` Lucas De Marchi 2021-02-19 22:59 ` Lucas De Marchi 2021-02-20 17:56 ` Winkler, Tomas 2021-02-20 17:56 ` Winkler, Tomas 2021-02-16 18:19 ` [RFC PATCH 4/9] drm/i915/spi: implement region enumeration Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 5/9] drm/i915/spi: implement spi access functions Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 6/9] drm/i915/spi: spi register with mtd Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 7/9] drm/i915/spi: mtd: implement access handlers Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 8/9] drm/i915/spi: serialize spi access Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:19 ` [RFC PATCH 9/9] mtd: use refcount to prevent corruption Tomas Winkler 2021-02-16 18:19 ` [Intel-gfx] " Tomas Winkler 2021-02-16 18:45 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/spi: discrete graphics internal spi Patchwork 2021-02-16 18:47 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork 2021-02-16 19:14 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork 2021-02-16 20:35 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork 2021-02-16 23:01 ` [RFC PATCH 0/9] " Richard Weinberger 2021-02-16 23:01 ` [Intel-gfx] " Richard Weinberger 2021-02-17 8:34 ` Winkler, Tomas 2021-02-17 8:34 ` [Intel-gfx] " Winkler, Tomas 2021-02-21 7:10 ` Winkler, Tomas 2021-02-21 7:10 ` [Intel-gfx] " Winkler, Tomas 2021-02-22 22:38 ` Richard Weinberger 2021-02-22 22:38 ` [Intel-gfx] " Richard Weinberger 2021-02-23 6:31 ` Winkler, Tomas 2021-02-23 6:31 ` [Intel-gfx] " Winkler, Tomas 2021-02-28 6:52 ` Winkler, Tomas 2021-02-28 6:52 ` [Intel-gfx] " Winkler, Tomas 2021-02-17 10:36 ` Jani Nikula 2021-02-17 10:36 ` [Intel-gfx] " Jani Nikula 2021-02-17 12:50 ` Winkler, Tomas 2021-02-17 12:50 ` [Intel-gfx] " Winkler, Tomas 2021-02-17 13:35 ` Jani Nikula 2021-02-17 13:35 ` [Intel-gfx] " Jani Nikula 2021-02-17 18:33 ` Rodrigo Vivi 2021-02-17 18:33 ` Rodrigo Vivi 2021-02-17 11:02 ` Jani Nikula 2021-02-17 11:02 ` [Intel-gfx] " Jani Nikula 2021-02-17 13:56 ` Winkler, Tomas 2021-02-17 13:56 ` [Intel-gfx] " Winkler, Tomas 2021-03-01 12:33 ` Jani Nikula 2021-03-01 12:33 ` [Intel-gfx] " Jani Nikula
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=87blcjarof.fsf@intel.com \ --to=jani.nikula@linux.intel.com \ --cc=alexander.usyskin@intel.com \ --cc=intel-gfx@lists.freedesktop.org \ --cc=joonas.lahtinen@linux.intel.com \ --cc=linux-mtd@lists.infradead.org \ --cc=lucas.demarchi@intel.com \ --cc=miquel.raynal@bootlin.com \ --cc=richard@nod.at \ --cc=rodrigo.vivi@intel.com \ --cc=tomas.winkler@intel.com \ --cc=vigneshr@ti.com \ --cc=vitaly.lubart@intel.com \ /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.