]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
platform/x86/intel/vsec: Switch exported helpers from pci_dev to device
authorDavid E. Box <david.e.box@linux.intel.com>
Fri, 13 Mar 2026 01:51:43 +0000 (18:51 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 17 Mar 2026 16:51:15 +0000 (18:51 +0200)
Preparatory refactor for ACPI-enumerated PMT endpoints. Several exported
PMT/VSEC interfaces and structs carried struct pci_dev * even though
callers only need a generic struct device. Move those to struct device * so
the same APIs work for PCI and ACPI parents.

Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://patch.msgid.link/20260313015202.3660072-5-david.e.box@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
15 files changed:
drivers/gpu/drm/xe/xe_debugfs.c
drivers/gpu/drm/xe/xe_hwmon.c
drivers/gpu/drm/xe/xe_vsec.c
drivers/gpu/drm/xe/xe_vsec.h
drivers/platform/x86/intel/pmc/core.c
drivers/platform/x86/intel/pmc/ssram_telemetry.c
drivers/platform/x86/intel/pmt/class.c
drivers/platform/x86/intel/pmt/class.h
drivers/platform/x86/intel/pmt/discovery.c
drivers/platform/x86/intel/pmt/telemetry.c
drivers/platform/x86/intel/pmt/telemetry.h
drivers/platform/x86/intel/sdsi.c
drivers/platform/x86/intel/vsec.c
drivers/platform/x86/intel/vsec_tpmi.c
include/linux/intel_vsec.h

index 844cfafe1ec7943fb0a43a772e2c84cdf4424fda..ad2d8f179eb68ac9ae71bc230469eb9729eff40b 100644 (file)
@@ -45,7 +45,7 @@ static void read_residency_counter(struct xe_device *xe, struct xe_mmio *mmio,
        u64 residency = 0;
        int ret;
 
-       ret = xe_pmt_telem_read(to_pci_dev(xe->drm.dev),
+       ret = xe_pmt_telem_read(xe->drm.dev,
                                xe_mmio_read32(mmio, PUNIT_TELEMETRY_GUID),
                                &residency, offset, sizeof(residency));
        if (ret != sizeof(residency)) {
index 0fd4d4f1014afee8cb7e35e6fae4816ce6a6ec61..92e423a339f15021e10697cf7954aa2299463df6 100644 (file)
@@ -506,7 +506,7 @@ xe_hwmon_energy_get(struct xe_hwmon *hwmon, int channel, long *energy)
        if (hwmon->xe->info.platform == XE_BATTLEMAGE) {
                u64 pmt_val;
 
-               ret = xe_pmt_telem_read(to_pci_dev(hwmon->xe->drm.dev),
+               ret = xe_pmt_telem_read(hwmon->xe->drm.dev,
                                        xe_mmio_read32(mmio, PUNIT_TELEMETRY_GUID),
                                        &pmt_val, BMG_ENERGY_STATUS_PMT_OFFSET, sizeof(pmt_val));
                if (ret != sizeof(pmt_val)) {
index 4ebb4dbe1c9b9e6d17ba44aa45f743c9d247f10f..a9baf0bfe572cd8c66e2403a8e1fdd931ec31544 100644 (file)
@@ -140,10 +140,10 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
        return 0;
 }
 
-int xe_pmt_telem_read(struct pci_dev *pdev, u32 guid, u64 *data, loff_t user_offset,
+int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset,
                      u32 count)
 {
-       struct xe_device *xe = pdev_to_xe_device(pdev);
+       struct xe_device *xe = kdev_to_xe_device(dev);
        void __iomem *telem_addr = xe->mmio.regs + BMG_TELEMETRY_OFFSET;
        u32 mem_region;
        u32 offset;
@@ -198,7 +198,6 @@ void xe_vsec_init(struct xe_device *xe)
 {
        struct intel_vsec_platform_info *info;
        struct device *dev = xe->drm.dev;
-       struct pci_dev *pdev = to_pci_dev(dev);
        enum xe_vsec platform;
 
        platform = get_platform_info(xe);
@@ -221,6 +220,6 @@ void xe_vsec_init(struct xe_device *xe)
         * Register a VSEC. Cleanup is handled using device managed
         * resources.
         */
-       intel_vsec_register(pdev, info);
+       intel_vsec_register(dev, info);
 }
 MODULE_IMPORT_NS("INTEL_VSEC");
index dabfb4e02d7072616f10793a2734a6f538d0e690..a25b4e6e681b5be606a168f8624ff41440c3394b 100644 (file)
@@ -6,10 +6,10 @@
 
 #include <linux/types.h>
 
-struct pci_dev;
+struct device;
 struct xe_device;
 
 void xe_vsec_init(struct xe_device *xe);
-int xe_pmt_telem_read(struct pci_dev *pdev, u32 guid, u64 *data, loff_t user_offset, u32 count);
+int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset, u32 count);
 
 #endif
index 02b303418d18595cff2e4519b80ce7ebc22f859a..d91e1ab842d6524fcb6b87059efae437a0bbae76 100644 (file)
@@ -1315,7 +1315,7 @@ static struct telem_endpoint *pmc_core_register_endpoint(struct pci_dev *pcidev,
        unsigned int i;
 
        for (i = 0; guids[i]; i++) {
-               ep = pmt_telem_find_and_register_endpoint(pcidev, guids[i], 0);
+               ep = pmt_telem_find_and_register_endpoint(&pcidev->dev, guids[i], 0);
                if (!IS_ERR(ep))
                        return ep;
        }
@@ -1600,7 +1600,7 @@ static int pmc_core_get_telem_info(struct pmc_dev *pmcdev, struct pmc_dev_info *
                if (!pmc->map->lpm_req_guid)
                        return -ENXIO;
 
-               ep = pmt_telem_find_and_register_endpoint(pcidev, pmc->map->lpm_req_guid, 0);
+               ep = pmt_telem_find_and_register_endpoint(&pcidev->dev, pmc->map->lpm_req_guid, 0);
                if (IS_ERR(ep)) {
                        dev_dbg(&pmcdev->pdev->dev, "couldn't get telem endpoint %pe", ep);
                        return -EPROBE_DEFER;
index 03fad9331fc0ce0b8d98c163c2ecbc6bfa7dc5f8..6f6e83e70fc5ab690941123470fe9069cad62b1e 100644 (file)
@@ -60,7 +60,7 @@ pmc_ssram_telemetry_add_pmt(struct pci_dev *pcidev, u64 ssram_base, void __iomem
        info.base_addr = ssram_base;
        info.parent = &pcidev->dev;
 
-       return intel_vsec_register(pcidev, &info);
+       return intel_vsec_register(&pcidev->dev, &info);
 }
 
 static inline u64 get_base(void __iomem *addr, u32 offset)
index be3c8d9e4fff2ac2fe4ee61e5d7f9423a1e4be9a..b4c9964df8077ee7448976ea2f77a55167393d9d 100644 (file)
@@ -60,11 +60,11 @@ pmt_memcpy64_fromio(void *to, const u64 __iomem *from, size_t count)
        return count;
 }
 
-int pmt_telem_read_mmio(struct pci_dev *pdev, struct pmt_callbacks *cb, u32 guid, void *buf,
+int pmt_telem_read_mmio(struct device *dev, struct pmt_callbacks *cb, u32 guid, void *buf,
                        void __iomem *addr, loff_t off, u32 count)
 {
        if (cb && cb->read_telem)
-               return cb->read_telem(pdev, guid, buf, off, count);
+               return cb->read_telem(dev, guid, buf, off, count);
 
        addr += off;
 
@@ -99,7 +99,7 @@ intel_pmt_read(struct file *filp, struct kobject *kobj,
        if (count > entry->size - off)
                count = entry->size - off;
 
-       count = pmt_telem_read_mmio(entry->pcidev, entry->cb, entry->header.guid, buf,
+       count = pmt_telem_read_mmio(entry->ep->dev, entry->cb, entry->header.guid, buf,
                                    entry->base, off, count);
 
        return count;
@@ -208,7 +208,7 @@ static int intel_pmt_populate_entry(struct intel_pmt_entry *entry,
                                    struct intel_vsec_device *ivdev,
                                    struct resource *disc_res)
 {
-       struct pci_dev *pci_dev = ivdev->pcidev;
+       struct pci_dev *pci_dev = to_pci_dev(ivdev->dev);
        struct device *dev = &ivdev->auxdev.dev;
        struct intel_pmt_header *header = &entry->header;
        u8 bir;
index 3c5ad5f52bca68350343a4b575d5232bf47a5c55..1ae56a5baad23dc4606ed76c1a73adc90ee14a38 100644 (file)
 #define GET_BIR(v)             ((v) & GENMASK(2, 0))
 #define GET_ADDRESS(v)         ((v) & GENMASK(31, 3))
 
+struct device;
 struct pci_dev;
 extern struct class intel_pmt_class;
 
 struct telem_endpoint {
-       struct pci_dev          *pcidev;
+       struct device           *dev;
        struct telem_header     header;
        struct pmt_callbacks    *cb;
        void __iomem            *base;
@@ -65,7 +66,7 @@ struct intel_pmt_namespace {
                                struct intel_pmt_entry *entry);
 };
 
-int pmt_telem_read_mmio(struct pci_dev *pdev, struct pmt_callbacks *cb, u32 guid, void *buf,
+int pmt_telem_read_mmio(struct device *dev, struct pmt_callbacks *cb, u32 guid, void *buf,
                        void __iomem *addr, loff_t off, u32 count);
 bool intel_pmt_is_early_client_hw(struct device *dev);
 int intel_pmt_dev_create(struct intel_pmt_entry *entry,
index e500aa327d23747df493bd6aec9d8e6d7eafdd57..c482368bfaaefffd1f7eea2e149951ddc0c9d9a9 100644 (file)
@@ -542,7 +542,7 @@ static int pmt_features_probe(struct auxiliary_device *auxdev, const struct auxi
        if (!priv)
                return -ENOMEM;
 
-       priv->parent = &ivdev->pcidev->dev;
+       priv->parent = ivdev->dev;
        auxiliary_set_drvdata(auxdev, priv);
 
        priv->dev = device_create(&intel_pmt_class, &auxdev->dev, MKDEV(0, 0), priv,
@@ -609,7 +609,7 @@ void intel_pmt_get_features(struct intel_pmt_entry *entry)
 
        mutex_lock(&feature_list_lock);
        list_for_each_entry(feature, &pmt_feature_list, list) {
-               if (feature->priv->parent != &entry->ep->pcidev->dev)
+               if (feature->priv->parent != entry->ep->dev)
                        continue;
 
                pmt_get_features(entry, feature);
index a52803bfe124c78cfbf90d59ee346ba0eef6d9d3..bdc7c24a3678515beb6582f36d26e83d4235f2f4 100644 (file)
@@ -112,7 +112,7 @@ static int pmt_telem_add_endpoint(struct intel_vsec_device *ivdev,
                return -ENOMEM;
 
        ep = entry->ep;
-       ep->pcidev = ivdev->pcidev;
+       ep->dev = ivdev->dev;
        ep->header.access_type = entry->header.access_type;
        ep->header.guid = entry->header.guid;
        ep->header.base_offset = entry->header.base_offset;
@@ -204,7 +204,7 @@ int pmt_telem_get_endpoint_info(int devid, struct telem_endpoint_info *info)
                goto unlock;
        }
 
-       info->pdev = entry->ep->pcidev;
+       info->dev = entry->ep->dev;
        info->header = entry->ep->header;
 
 unlock:
@@ -218,9 +218,10 @@ static int pmt_copy_region(struct telemetry_region *region,
                           struct intel_pmt_entry *entry)
 {
 
+       struct pci_dev *pdev = to_pci_dev(entry->ep->dev);
        struct oobmsm_plat_info *plat_info;
 
-       plat_info = intel_vsec_get_mapping(entry->ep->pcidev);
+       plat_info = intel_vsec_get_mapping(pdev);
        if (IS_ERR(plat_info))
                return PTR_ERR(plat_info);
 
@@ -308,7 +309,7 @@ int pmt_telem_read(struct telem_endpoint *ep, u32 id, u64 *data, u32 count)
        if (offset + NUM_BYTES_QWORD(count) > size)
                return -EINVAL;
 
-       pmt_telem_read_mmio(ep->pcidev, ep->cb, ep->header.guid, data, ep->base, offset,
+       pmt_telem_read_mmio(ep->dev, ep->cb, ep->header.guid, data, ep->base, offset,
                            NUM_BYTES_QWORD(count));
 
        return ep->present ? 0 : -EPIPE;
@@ -335,7 +336,7 @@ int pmt_telem_read32(struct telem_endpoint *ep, u32 id, u32 *data, u32 count)
 EXPORT_SYMBOL_NS_GPL(pmt_telem_read32, "INTEL_PMT_TELEMETRY");
 
 struct telem_endpoint *
-pmt_telem_find_and_register_endpoint(struct pci_dev *pcidev, u32 guid, u16 pos)
+pmt_telem_find_and_register_endpoint(struct device *dev, u32 guid, u16 pos)
 {
        int devid = 0;
        int inst = 0;
@@ -348,7 +349,7 @@ pmt_telem_find_and_register_endpoint(struct pci_dev *pcidev, u32 guid, u16 pos)
                if (err)
                        return ERR_PTR(err);
 
-               if (ep_info.header.guid == guid && ep_info.pdev == pcidev) {
+               if (ep_info.header.guid == guid && ep_info.dev == dev) {
                        if (inst == pos)
                                return pmt_telem_register_endpoint(devid);
                        ++inst;
index d45af5512b4e2dd8de7f35a0b02f84482b39efdf..0f88c5e7d90e90c53c78d25c99036fba9b924dec 100644 (file)
@@ -6,8 +6,8 @@
 #define PMT_TELEM_TELEMETRY    0
 #define PMT_TELEM_CRASHLOG     1
 
+struct device;
 struct telem_endpoint;
-struct pci_dev;
 
 struct telem_header {
        u8      access_type;
@@ -17,7 +17,7 @@ struct telem_header {
 };
 
 struct telem_endpoint_info {
-       struct pci_dev          *pdev;
+       struct device           *dev;
        struct telem_header     header;
 };
 
@@ -71,8 +71,8 @@ int pmt_telem_get_endpoint_info(int devid, struct telem_endpoint_info *info);
 
 /**
  * pmt_telem_find_and_register_endpoint() - Get a telemetry endpoint from
- * pci_dev device, guid and pos
- * @pdev:   PCI device inside the Intel vsec
+ * device, guid and pos
+ * @dev:    device inside the Intel vsec
  * @guid:   GUID of the telemetry space
  * @pos:    Instance of the guid
  *
@@ -80,8 +80,8 @@ int pmt_telem_get_endpoint_info(int devid, struct telem_endpoint_info *info);
  * * endpoint    - On success returns pointer to the telemetry endpoint
  * * -ENXIO      - telemetry endpoint not found
  */
-struct telem_endpoint *pmt_telem_find_and_register_endpoint(struct pci_dev *pcidev,
-                               u32 guid, u16 pos);
+struct telem_endpoint *
+pmt_telem_find_and_register_endpoint(struct device *dev, u32 guid, u16 pos);
 
 /**
  * pmt_telem_read() - Read qwords from counter sram using sample id
index da75f53d0bcc02dadbaf7740ac3b6ce4d4d4fe73..d7e37d4ace238a7926ea7f26f381ad20eed413f1 100644 (file)
@@ -599,13 +599,14 @@ static int sdsi_get_layout(struct sdsi_priv *priv, struct disc_table *table)
        return 0;
 }
 
-static int sdsi_map_mbox_registers(struct sdsi_priv *priv, struct pci_dev *parent,
+static int sdsi_map_mbox_registers(struct sdsi_priv *priv, struct device *dev,
                                   struct disc_table *disc_table, struct resource *disc_res)
 {
        u32 access_type = FIELD_GET(DT_ACCESS_TYPE, disc_table->access_info);
        u32 size = FIELD_GET(DT_SIZE, disc_table->access_info);
        u32 tbir = FIELD_GET(DT_TBIR, disc_table->offset);
        u32 offset = DT_OFFSET(disc_table->offset);
+       struct pci_dev *parent = to_pci_dev(dev);
        struct resource res = {};
 
        /* Starting location of SDSi MMIO region based on access type */
@@ -681,7 +682,7 @@ static int sdsi_probe(struct auxiliary_device *auxdev, const struct auxiliary_de
                return ret;
 
        /* Map the SDSi mailbox registers */
-       ret = sdsi_map_mbox_registers(priv, intel_cap_dev->pcidev, &disc_table, disc_res);
+       ret = sdsi_map_mbox_registers(priv, intel_cap_dev->dev, &disc_table, disc_res);
        if (ret)
                return ret;
 
index 938648b9ef092850e67f6957ef7173fe7bb91b33..a547e4b982453776b93a71f85edaf90911dd4ff3 100644 (file)
@@ -274,7 +274,7 @@ cleanup_aux:
 }
 EXPORT_SYMBOL_NS_GPL(intel_vsec_add_aux, "INTEL_VSEC");
 
-static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *header,
+static int intel_vsec_add_dev(struct device *dev, struct intel_vsec_header *header,
                              const struct intel_vsec_platform_info *info,
                              unsigned long cap_id, u64 base_addr)
 {
@@ -288,18 +288,18 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
        if (info->parent)
                parent = info->parent;
        else
-               parent = &pdev->dev;
+               parent = dev;
 
        if (!intel_vsec_supported(header->id, info->caps))
                return -EINVAL;
 
        if (!header->num_entries) {
-               dev_dbg(&pdev->dev, "Invalid 0 entry count for header id %d\n", header->id);
+               dev_dbg(dev, "Invalid 0 entry count for header id %d\n", header->id);
                return -EINVAL;
        }
 
        if (!header->entry_size) {
-               dev_dbg(&pdev->dev, "Invalid 0 entry size for header id %d\n", header->id);
+               dev_dbg(dev, "Invalid 0 entry size for header id %d\n", header->id);
                return -EINVAL;
        }
 
@@ -331,7 +331,7 @@ static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *he
                release_mem_region(tmp->start, resource_size(tmp));
        }
 
-       intel_vsec_dev->pcidev = pdev;
+       intel_vsec_dev->dev = dev;
        intel_vsec_dev->resource = no_free_ptr(res);
        intel_vsec_dev->num_resources = header->num_entries;
        intel_vsec_dev->quirks = info->quirks;
@@ -409,13 +409,14 @@ static int get_cap_id(u32 header_id, unsigned long *cap_id)
        return 0;
 }
 
-static int intel_vsec_register_device(struct pci_dev *pdev,
+static int intel_vsec_register_device(struct device *dev,
                                      struct intel_vsec_header *header,
                                      const struct intel_vsec_platform_info *info,
                                      u64 base_addr)
 {
        const struct vsec_feature_dependency *consumer_deps;
        struct vsec_priv *priv;
+       struct pci_dev *pdev;
        unsigned long cap_id;
        int ret;
 
@@ -427,8 +428,12 @@ static int intel_vsec_register_device(struct pci_dev *pdev,
         * Only track dependencies for devices probed by the VSEC driver.
         * For others using the exported APIs, add the device directly.
         */
+       if (!dev_is_pci(dev))
+               return intel_vsec_add_dev(dev, header, info, cap_id, base_addr);
+
+       pdev = to_pci_dev(dev);
        if (!pci_match_id(intel_vsec_pci_ids, pdev))
-               return intel_vsec_add_dev(pdev, header, info, cap_id, base_addr);
+               return intel_vsec_add_dev(dev, header, info, cap_id, base_addr);
 
        priv = pci_get_drvdata(pdev);
        if (priv->state[cap_id] == STATE_REGISTERED ||
@@ -444,7 +449,7 @@ static int intel_vsec_register_device(struct pci_dev *pdev,
 
        consumer_deps = get_consumer_dependencies(priv, cap_id);
        if (!consumer_deps || suppliers_ready(priv, consumer_deps, cap_id)) {
-               ret = intel_vsec_add_dev(pdev, header, info, cap_id, base_addr);
+               ret = intel_vsec_add_dev(dev, header, info, cap_id, base_addr);
                if (ret)
                        priv->state[cap_id] = STATE_SKIP;
                else
@@ -456,7 +461,7 @@ static int intel_vsec_register_device(struct pci_dev *pdev,
        return -EAGAIN;
 }
 
-static bool intel_vsec_walk_header(struct pci_dev *pdev,
+static bool intel_vsec_walk_header(struct device *dev,
                                   const struct intel_vsec_platform_info *info)
 {
        struct intel_vsec_header **header = info->headers;
@@ -464,7 +469,7 @@ static bool intel_vsec_walk_header(struct pci_dev *pdev,
        int ret;
 
        for ( ; *header; header++) {
-               ret = intel_vsec_register_device(pdev, *header, info, info->base_addr);
+               ret = intel_vsec_register_device(dev, *header, info, info->base_addr);
                if (!ret)
                        have_devices = true;
        }
@@ -512,7 +517,7 @@ static bool intel_vsec_walk_dvsec(struct pci_dev *pdev,
                pci_read_config_dword(pdev, pos + PCI_DVSEC_HEADER2, &hdr);
                header.id = PCI_DVSEC_HEADER2_ID(hdr);
 
-               ret = intel_vsec_register_device(pdev, &header, info,
+               ret = intel_vsec_register_device(&pdev->dev, &header, info,
                                                 pci_resource_start(pdev, header.tbir));
                if (ret)
                        continue;
@@ -558,7 +563,7 @@ static bool intel_vsec_walk_vsec(struct pci_dev *pdev,
                header.tbir = INTEL_DVSEC_TABLE_BAR(table);
                header.offset = INTEL_DVSEC_TABLE_OFFSET(table);
 
-               ret = intel_vsec_register_device(pdev, &header, info,
+               ret = intel_vsec_register_device(&pdev->dev, &header, info,
                                                 pci_resource_start(pdev, header.tbir));
                if (ret)
                        continue;
@@ -569,13 +574,13 @@ static bool intel_vsec_walk_vsec(struct pci_dev *pdev,
        return have_devices;
 }
 
-int intel_vsec_register(struct pci_dev *pdev,
+int intel_vsec_register(struct device *dev,
                        const struct intel_vsec_platform_info *info)
 {
-       if (!pdev || !info || !info->headers)
+       if (!dev || !info || !info->headers)
                return -EINVAL;
 
-       if (!intel_vsec_walk_header(pdev, info))
+       if (!intel_vsec_walk_header(dev, info))
                return -ENODEV;
        else
                return 0;
@@ -601,7 +606,7 @@ static bool intel_vsec_get_features(struct pci_dev *pdev,
                found = true;
 
        if (info && (info->quirks & VSEC_QUIRK_NO_DVSEC) &&
-           intel_vsec_walk_header(pdev, info))
+           intel_vsec_walk_header(&pdev->dev, info))
                found = true;
 
        return found;
@@ -673,7 +678,10 @@ int intel_vsec_set_mapping(struct oobmsm_plat_info *plat_info,
 {
        struct vsec_priv *priv;
 
-       priv = pci_get_drvdata(vsec_dev->pcidev);
+       if (!dev_is_pci(vsec_dev->dev))
+               return -ENODEV;
+
+       priv = pci_get_drvdata(to_pci_dev(vsec_dev->dev));
        if (!priv)
                return -EINVAL;
 
@@ -821,7 +829,7 @@ static pci_ers_result_t intel_vsec_pci_slot_reset(struct pci_dev *pdev)
 
        xa_for_each(&auxdev_array, index, intel_vsec_dev) {
                /* check if pdev doesn't match */
-               if (pdev != intel_vsec_dev->pcidev)
+               if (&pdev->dev != intel_vsec_dev->dev)
                        continue;
                devm_release_action(&pdev->dev, intel_vsec_remove_aux,
                                    &intel_vsec_dev->auxdev);
index 2298b6361094c7e14988a3aaf30b2ad3f904a5c8..9dddf4e5863e5e3aa829ed4798006e5b64f9048e 100644 (file)
@@ -530,7 +530,7 @@ static const struct file_operations mem_write_ops = {
        .release        = single_release,
 };
 
-#define tpmi_to_dev(info)      (&info->vsec_dev->pcidev->dev)
+#define tpmi_to_dev(info)      ((info)->vsec_dev->dev)
 
 static void tpmi_dbgfs_register(struct intel_tpmi_info *tpmi_info)
 {
@@ -642,7 +642,7 @@ static int tpmi_create_device(struct intel_tpmi_info *tpmi_info,
                tmp->flags = IORESOURCE_MEM;
        }
 
-       feature_vsec_dev->pcidev = vsec_dev->pcidev;
+       feature_vsec_dev->dev = vsec_dev->dev;
        feature_vsec_dev->resource = res;
        feature_vsec_dev->num_resources = pfs->pfs_header.num_entries;
        feature_vsec_dev->priv_data = &tpmi_info->plat_info;
@@ -742,7 +742,7 @@ static int tpmi_fetch_pfs_header(struct intel_tpmi_pm_feature *pfs, u64 start, i
 static int intel_vsec_tpmi_init(struct auxiliary_device *auxdev)
 {
        struct intel_vsec_device *vsec_dev = auxdev_to_ivdev(auxdev);
-       struct pci_dev *pci_dev = vsec_dev->pcidev;
+       struct pci_dev *pci_dev = to_pci_dev(vsec_dev->dev);
        struct intel_tpmi_info *tpmi_info;
        u64 pfs_start = 0;
        int ret, i;
index 49a746ec012890ed7dbb9560a45bdfbf907b9e1c..4eecb2a6bac4ff2651521a5578e0eb71a1ba3918 100644 (file)
@@ -29,6 +29,7 @@
 #define INTEL_DVSEC_TABLE_OFFSET(x)    ((x) & GENMASK(31, 3))
 #define TABLE_OFFSET_SHIFT             3
 
+struct device;
 struct pci_dev;
 struct resource;
 
@@ -82,14 +83,14 @@ enum intel_vsec_quirks {
  * struct pmt_callbacks - Callback infrastructure for PMT devices
  * @read_telem: when specified, called by client driver to access PMT
  * data (instead of direct copy).
- * * pdev:  PCI device reference for the callback's use
+ * * dev:   device reference for the callback's use
  * * guid:  ID of data to acccss
  * * data:  buffer for the data to be copied
  * * off:   offset into the requested buffer
  * * count: size of buffer
  */
 struct pmt_callbacks {
-       int (*read_telem)(struct pci_dev *pdev, u32 guid, u64 *data, loff_t off, u32 count);
+       int (*read_telem)(struct device *dev, u32 guid, u64 *data, loff_t off, u32 count);
 };
 
 struct vsec_feature_dependency {
@@ -122,7 +123,7 @@ struct intel_vsec_platform_info {
 /**
  * struct intel_vsec_device - Auxbus specific device information
  * @auxdev:        auxbus device struct for auxbus access
- * @pcidev:        pci device associated with the device
+ * @dev:           struct device associated with the device
  * @resource:      any resources shared by the parent
  * @ida:           id reference
  * @num_resources: number of resources
@@ -135,7 +136,7 @@ struct intel_vsec_platform_info {
  */
 struct intel_vsec_device {
        struct auxiliary_device auxdev;
-       struct pci_dev *pcidev;
+       struct device *dev;
        struct resource *resource;
        struct ida *ida;
        int num_resources;
@@ -199,13 +200,13 @@ static inline struct intel_vsec_device *auxdev_to_ivdev(struct auxiliary_device
 }
 
 #if IS_ENABLED(CONFIG_INTEL_VSEC)
-int intel_vsec_register(struct pci_dev *pdev,
+int intel_vsec_register(struct device *dev,
                        const struct intel_vsec_platform_info *info);
 int intel_vsec_set_mapping(struct oobmsm_plat_info *plat_info,
                           struct intel_vsec_device *vsec_dev);
 struct oobmsm_plat_info *intel_vsec_get_mapping(struct pci_dev *pdev);
 #else
-static inline int intel_vsec_register(struct pci_dev *pdev,
+static inline int intel_vsec_register(struct device *dev,
                                      const struct intel_vsec_platform_info *info)
 {
        return -ENODEV;