diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/misc/mei/hw-me.c | 34 | ||||
-rw-r--r-- | drivers/misc/mei/hw-me.h | 7 | ||||
-rw-r--r-- | drivers/misc/mei/hw-txe.c | 17 | ||||
-rw-r--r-- | drivers/misc/mei/hw-txe.h | 5 | ||||
-rw-r--r-- | drivers/misc/mei/init.c | 24 | ||||
-rw-r--r-- | drivers/misc/mei/mei_dev.h | 27 | ||||
-rw-r--r-- | drivers/misc/mei/pci-me.c | 77 | ||||
-rw-r--r-- | drivers/misc/mei/pci-txe.c | 5 |
8 files changed, 144 insertions, 52 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c index 016ad88a2887..ed081182f973 100644 --- a/drivers/misc/mei/hw-me.c +++ b/drivers/misc/mei/hw-me.c | |||
@@ -792,14 +792,44 @@ static const struct mei_hw_ops mei_me_hw_ops = { | |||
792 | .read = mei_me_read_slots | 792 | .read = mei_me_read_slots |
793 | }; | 793 | }; |
794 | 794 | ||
795 | #define MEI_CFG_LEGACY_HFS \ | ||
796 | .fw_status.count = 0 | ||
797 | |||
798 | #define MEI_CFG_ICH_HFS \ | ||
799 | .fw_status.count = 1, \ | ||
800 | .fw_status.status[0] = PCI_CFG_HFS_1 | ||
801 | |||
802 | #define MEI_CFG_PCH_HFS \ | ||
803 | .fw_status.count = 2, \ | ||
804 | .fw_status.status[0] = PCI_CFG_HFS_1, \ | ||
805 | .fw_status.status[1] = PCI_CFG_HFS_2 | ||
806 | |||
807 | |||
808 | /* ICH Legacy devices */ | ||
809 | const struct mei_cfg mei_me_legacy_cfg = { | ||
810 | MEI_CFG_LEGACY_HFS, | ||
811 | }; | ||
812 | |||
813 | /* ICH devices */ | ||
814 | const struct mei_cfg mei_me_ich_cfg = { | ||
815 | MEI_CFG_ICH_HFS, | ||
816 | }; | ||
817 | |||
818 | /* PCH devices */ | ||
819 | const struct mei_cfg mei_me_pch_cfg = { | ||
820 | MEI_CFG_PCH_HFS, | ||
821 | }; | ||
822 | |||
795 | /** | 823 | /** |
796 | * mei_me_dev_init - allocates and initializes the mei device structure | 824 | * mei_me_dev_init - allocates and initializes the mei device structure |
797 | * | 825 | * |
798 | * @pdev: The pci device structure | 826 | * @pdev: The pci device structure |
827 | * @cfg: per device generation config | ||
799 | * | 828 | * |
800 | * returns The mei_device_device pointer on success, NULL on failure. | 829 | * returns The mei_device_device pointer on success, NULL on failure. |
801 | */ | 830 | */ |
802 | struct mei_device *mei_me_dev_init(struct pci_dev *pdev) | 831 | struct mei_device *mei_me_dev_init(struct pci_dev *pdev, |
832 | const struct mei_cfg *cfg) | ||
803 | { | 833 | { |
804 | struct mei_device *dev; | 834 | struct mei_device *dev; |
805 | 835 | ||
@@ -808,7 +838,7 @@ struct mei_device *mei_me_dev_init(struct pci_dev *pdev) | |||
808 | if (!dev) | 838 | if (!dev) |
809 | return NULL; | 839 | return NULL; |
810 | 840 | ||
811 | mei_device_init(dev); | 841 | mei_device_init(dev, cfg); |
812 | 842 | ||
813 | dev->ops = &mei_me_hw_ops; | 843 | dev->ops = &mei_me_hw_ops; |
814 | 844 | ||
diff --git a/drivers/misc/mei/hw-me.h b/drivers/misc/mei/hw-me.h index 0a75ab85b3a2..473aafbc4023 100644 --- a/drivers/misc/mei/hw-me.h +++ b/drivers/misc/mei/hw-me.h | |||
@@ -38,7 +38,12 @@ struct mei_me_hw { | |||
38 | 38 | ||
39 | #define to_me_hw(dev) (struct mei_me_hw *)((dev)->hw) | 39 | #define to_me_hw(dev) (struct mei_me_hw *)((dev)->hw) |
40 | 40 | ||
41 | struct mei_device *mei_me_dev_init(struct pci_dev *pdev); | 41 | extern const struct mei_cfg mei_me_legacy_cfg; |
42 | extern const struct mei_cfg mei_me_ich_cfg; | ||
43 | extern const struct mei_cfg mei_me_pch_cfg; | ||
44 | |||
45 | struct mei_device *mei_me_dev_init(struct pci_dev *pdev, | ||
46 | const struct mei_cfg *cfg); | ||
42 | 47 | ||
43 | int mei_me_pg_set_sync(struct mei_device *dev); | 48 | int mei_me_pg_set_sync(struct mei_device *dev); |
44 | int mei_me_pg_unset_sync(struct mei_device *dev); | 49 | int mei_me_pg_unset_sync(struct mei_device *dev); |
diff --git a/drivers/misc/mei/hw-txe.c b/drivers/misc/mei/hw-txe.c index 455a6a56b82b..93273783dec5 100644 --- a/drivers/misc/mei/hw-txe.c +++ b/drivers/misc/mei/hw-txe.c | |||
@@ -1104,14 +1104,27 @@ static const struct mei_hw_ops mei_txe_hw_ops = { | |||
1104 | 1104 | ||
1105 | }; | 1105 | }; |
1106 | 1106 | ||
1107 | #define MEI_CFG_TXE_FW_STS \ | ||
1108 | .fw_status.count = 2, \ | ||
1109 | .fw_status.status[0] = PCI_CFG_TXE_FW_STS0, \ | ||
1110 | .fw_status.status[1] = PCI_CFG_TXE_FW_STS1 | ||
1111 | |||
1112 | const struct mei_cfg mei_txe_cfg = { | ||
1113 | MEI_CFG_TXE_FW_STS, | ||
1114 | }; | ||
1115 | |||
1116 | |||
1107 | /** | 1117 | /** |
1108 | * mei_txe_dev_init - allocates and initializes txe hardware specific structure | 1118 | * mei_txe_dev_init - allocates and initializes txe hardware specific structure |
1109 | * | 1119 | * |
1110 | * @pdev - pci device | 1120 | * @pdev - pci device |
1121 | * @cfg - per device generation config | ||
1122 | * | ||
1111 | * returns struct mei_device * on success or NULL; | 1123 | * returns struct mei_device * on success or NULL; |
1112 | * | 1124 | * |
1113 | */ | 1125 | */ |
1114 | struct mei_device *mei_txe_dev_init(struct pci_dev *pdev) | 1126 | struct mei_device *mei_txe_dev_init(struct pci_dev *pdev, |
1127 | const struct mei_cfg *cfg) | ||
1115 | { | 1128 | { |
1116 | struct mei_device *dev; | 1129 | struct mei_device *dev; |
1117 | struct mei_txe_hw *hw; | 1130 | struct mei_txe_hw *hw; |
@@ -1121,7 +1134,7 @@ struct mei_device *mei_txe_dev_init(struct pci_dev *pdev) | |||
1121 | if (!dev) | 1134 | if (!dev) |
1122 | return NULL; | 1135 | return NULL; |
1123 | 1136 | ||
1124 | mei_device_init(dev); | 1137 | mei_device_init(dev, cfg); |
1125 | 1138 | ||
1126 | hw = to_txe_hw(dev); | 1139 | hw = to_txe_hw(dev); |
1127 | 1140 | ||
diff --git a/drivers/misc/mei/hw-txe.h b/drivers/misc/mei/hw-txe.h index e8dd2d165c25..e244af79167f 100644 --- a/drivers/misc/mei/hw-txe.h +++ b/drivers/misc/mei/hw-txe.h | |||
@@ -61,7 +61,10 @@ static inline struct mei_device *hw_txe_to_mei(struct mei_txe_hw *hw) | |||
61 | return container_of((void *)hw, struct mei_device, hw); | 61 | return container_of((void *)hw, struct mei_device, hw); |
62 | } | 62 | } |
63 | 63 | ||
64 | struct mei_device *mei_txe_dev_init(struct pci_dev *pdev); | 64 | extern const struct mei_cfg mei_txe_cfg; |
65 | |||
66 | struct mei_device *mei_txe_dev_init(struct pci_dev *pdev, | ||
67 | const struct mei_cfg *cfg); | ||
65 | 68 | ||
66 | irqreturn_t mei_txe_irq_quick_handler(int irq, void *dev_id); | 69 | irqreturn_t mei_txe_irq_quick_handler(int irq, void *dev_id); |
67 | irqreturn_t mei_txe_irq_thread_handler(int irq, void *dev_id); | 70 | irqreturn_t mei_txe_irq_thread_handler(int irq, void *dev_id); |
diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c index 510f378b1f06..006929222481 100644 --- a/drivers/misc/mei/init.c +++ b/drivers/misc/mei/init.c | |||
@@ -330,7 +330,28 @@ bool mei_write_is_idle(struct mei_device *dev) | |||
330 | } | 330 | } |
331 | EXPORT_SYMBOL_GPL(mei_write_is_idle); | 331 | EXPORT_SYMBOL_GPL(mei_write_is_idle); |
332 | 332 | ||
333 | void mei_device_init(struct mei_device *dev) | 333 | int mei_fw_status(struct mei_device *dev, struct mei_fw_status *fw_status) |
334 | { | ||
335 | int i; | ||
336 | const struct mei_fw_status *fw_src = &dev->cfg->fw_status; | ||
337 | |||
338 | if (!fw_status) | ||
339 | return -EINVAL; | ||
340 | |||
341 | fw_status->count = fw_src->count; | ||
342 | for (i = 0; i < fw_src->count && i < MEI_FW_STATUS_MAX; i++) { | ||
343 | int ret; | ||
344 | ret = pci_read_config_dword(dev->pdev, | ||
345 | fw_src->status[i], &fw_status->status[i]); | ||
346 | if (ret) | ||
347 | return ret; | ||
348 | } | ||
349 | |||
350 | return 0; | ||
351 | } | ||
352 | EXPORT_SYMBOL_GPL(mei_fw_status); | ||
353 | |||
354 | void mei_device_init(struct mei_device *dev, const struct mei_cfg *cfg) | ||
334 | { | 355 | { |
335 | /* setup our list array */ | 356 | /* setup our list array */ |
336 | INIT_LIST_HEAD(&dev->file_list); | 357 | INIT_LIST_HEAD(&dev->file_list); |
@@ -368,6 +389,7 @@ void mei_device_init(struct mei_device *dev) | |||
368 | bitmap_set(dev->host_clients_map, 0, 1); | 389 | bitmap_set(dev->host_clients_map, 0, 1); |
369 | 390 | ||
370 | dev->pg_event = MEI_PG_EVENT_IDLE; | 391 | dev->pg_event = MEI_PG_EVENT_IDLE; |
392 | dev->cfg = cfg; | ||
371 | } | 393 | } |
372 | EXPORT_SYMBOL_GPL(mei_device_init); | 394 | EXPORT_SYMBOL_GPL(mei_device_init); |
373 | 395 | ||
diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h index 1aaaf0b6681c..909d13de17e9 100644 --- a/drivers/misc/mei/mei_dev.h +++ b/drivers/misc/mei/mei_dev.h | |||
@@ -379,6 +379,22 @@ enum mei_pg_state { | |||
379 | MEI_PG_ON = 1, | 379 | MEI_PG_ON = 1, |
380 | }; | 380 | }; |
381 | 381 | ||
382 | /* | ||
383 | * mei_cfg | ||
384 | * | ||
385 | * @fw_status - FW status | ||
386 | */ | ||
387 | struct mei_cfg { | ||
388 | const struct mei_fw_status fw_status; | ||
389 | }; | ||
390 | |||
391 | |||
392 | #define MEI_PCI_DEVICE(dev, cfg) \ | ||
393 | .vendor = PCI_VENDOR_ID_INTEL, .device = (dev), \ | ||
394 | .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID, \ | ||
395 | .driver_data = (kernel_ulong_t)&(cfg) | ||
396 | |||
397 | |||
382 | /** | 398 | /** |
383 | * struct mei_device - MEI private device struct | 399 | * struct mei_device - MEI private device struct |
384 | 400 | ||
@@ -390,6 +406,7 @@ enum mei_pg_state { | |||
390 | * @hbuf_depth - depth of hardware host/write buffer is slots | 406 | * @hbuf_depth - depth of hardware host/write buffer is slots |
391 | * @hbuf_is_ready - query if the host host/write buffer is ready | 407 | * @hbuf_is_ready - query if the host host/write buffer is ready |
392 | * @wr_msg - the buffer for hbm control messages | 408 | * @wr_msg - the buffer for hbm control messages |
409 | * @cfg - per device generation config and ops | ||
393 | */ | 410 | */ |
394 | struct mei_device { | 411 | struct mei_device { |
395 | struct pci_dev *pdev; /* pointer to pci device struct */ | 412 | struct pci_dev *pdev; /* pointer to pci device struct */ |
@@ -500,6 +517,7 @@ struct mei_device { | |||
500 | 517 | ||
501 | 518 | ||
502 | const struct mei_hw_ops *ops; | 519 | const struct mei_hw_ops *ops; |
520 | const struct mei_cfg *cfg; | ||
503 | char hw[0] __aligned(sizeof(void *)); | 521 | char hw[0] __aligned(sizeof(void *)); |
504 | }; | 522 | }; |
505 | 523 | ||
@@ -532,7 +550,7 @@ static inline u32 mei_slots2data(int slots) | |||
532 | /* | 550 | /* |
533 | * mei init function prototypes | 551 | * mei init function prototypes |
534 | */ | 552 | */ |
535 | void mei_device_init(struct mei_device *dev); | 553 | void mei_device_init(struct mei_device *dev, const struct mei_cfg *cfg); |
536 | int mei_reset(struct mei_device *dev); | 554 | int mei_reset(struct mei_device *dev); |
537 | int mei_start(struct mei_device *dev); | 555 | int mei_start(struct mei_device *dev); |
538 | int mei_restart(struct mei_device *dev); | 556 | int mei_restart(struct mei_device *dev); |
@@ -611,6 +629,7 @@ void mei_watchdog_unregister(struct mei_device *dev); | |||
611 | * Register Access Function | 629 | * Register Access Function |
612 | */ | 630 | */ |
613 | 631 | ||
632 | |||
614 | static inline void mei_hw_config(struct mei_device *dev) | 633 | static inline void mei_hw_config(struct mei_device *dev) |
615 | { | 634 | { |
616 | dev->ops->hw_config(dev); | 635 | dev->ops->hw_config(dev); |
@@ -698,11 +717,7 @@ static inline int mei_count_full_read_slots(struct mei_device *dev) | |||
698 | return dev->ops->rdbuf_full_slots(dev); | 717 | return dev->ops->rdbuf_full_slots(dev); |
699 | } | 718 | } |
700 | 719 | ||
701 | static inline int mei_fw_status(struct mei_device *dev, | 720 | int mei_fw_status(struct mei_device *dev, struct mei_fw_status *fw_status); |
702 | struct mei_fw_status *fw_status) | ||
703 | { | ||
704 | return dev->ops->fw_status(dev, fw_status); | ||
705 | } | ||
706 | 721 | ||
707 | #define FW_STS_FMT "%08X %08X" | 722 | #define FW_STS_FMT "%08X %08X" |
708 | #define FW_STS_PRM(fw_status) \ | 723 | #define FW_STS_PRM(fw_status) \ |
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c index 88516b02c685..6cb9819ac5d5 100644 --- a/drivers/misc/mei/pci-me.c +++ b/drivers/misc/mei/pci-me.c | |||
@@ -44,42 +44,44 @@ | |||
44 | 44 | ||
45 | /* mei_pci_tbl - PCI Device ID Table */ | 45 | /* mei_pci_tbl - PCI Device ID Table */ |
46 | static const struct pci_device_id mei_me_pci_tbl[] = { | 46 | static const struct pci_device_id mei_me_pci_tbl[] = { |
47 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82946GZ)}, | 47 | {MEI_PCI_DEVICE(MEI_DEV_ID_82946GZ, mei_me_legacy_cfg)}, |
48 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82G35)}, | 48 | {MEI_PCI_DEVICE(MEI_DEV_ID_82G35, mei_me_legacy_cfg)}, |
49 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82Q965)}, | 49 | {MEI_PCI_DEVICE(MEI_DEV_ID_82Q965, mei_me_legacy_cfg)}, |
50 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82G965)}, | 50 | {MEI_PCI_DEVICE(MEI_DEV_ID_82G965, mei_me_legacy_cfg)}, |
51 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82GM965)}, | 51 | {MEI_PCI_DEVICE(MEI_DEV_ID_82GM965, mei_me_legacy_cfg)}, |
52 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_82GME965)}, | 52 | {MEI_PCI_DEVICE(MEI_DEV_ID_82GME965, mei_me_legacy_cfg)}, |
53 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_82Q35)}, | 53 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q35, mei_me_legacy_cfg)}, |
54 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_82G33)}, | 54 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82G33, mei_me_legacy_cfg)}, |
55 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_82Q33)}, | 55 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q33, mei_me_legacy_cfg)}, |
56 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_82X38)}, | 56 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82X38, mei_me_legacy_cfg)}, |
57 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_3200)}, | 57 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_3200, mei_me_legacy_cfg)}, |
58 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_6)}, | 58 | |
59 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_7)}, | 59 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_6, mei_me_legacy_cfg)}, |
60 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_8)}, | 60 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_7, mei_me_legacy_cfg)}, |
61 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_9)}, | 61 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_8, mei_me_legacy_cfg)}, |
62 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9_10)}, | 62 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_9, mei_me_legacy_cfg)}, |
63 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9M_1)}, | 63 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_10, mei_me_legacy_cfg)}, |
64 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9M_2)}, | 64 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_1, mei_me_legacy_cfg)}, |
65 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9M_3)}, | 65 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_2, mei_me_legacy_cfg)}, |
66 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH9M_4)}, | 66 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_3, mei_me_legacy_cfg)}, |
67 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH10_1)}, | 67 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_4, mei_me_legacy_cfg)}, |
68 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH10_2)}, | 68 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_1, mei_me_ich_cfg)}, |
69 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH10_3)}, | 69 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_2, mei_me_ich_cfg)}, |
70 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_ICH10_4)}, | 70 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_3, mei_me_ich_cfg)}, |
71 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_IBXPK_1)}, | 71 | {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_4, mei_me_ich_cfg)}, |
72 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_IBXPK_2)}, | 72 | |
73 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_CPT_1)}, | 73 | {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_1, mei_me_pch_cfg)}, |
74 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_PBG_1)}, | 74 | {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_2, mei_me_pch_cfg)}, |
75 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_PPT_1)}, | 75 | {MEI_PCI_DEVICE(MEI_DEV_ID_CPT_1, mei_me_pch_cfg)}, |
76 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_PPT_2)}, | 76 | {MEI_PCI_DEVICE(MEI_DEV_ID_PBG_1, mei_me_pch_cfg)}, |
77 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_PPT_3)}, | 77 | {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_1, mei_me_pch_cfg)}, |
78 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_LPT_H)}, | 78 | {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_2, mei_me_pch_cfg)}, |
79 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_LPT_W)}, | 79 | {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_3, mei_me_pch_cfg)}, |
80 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_LPT_LP)}, | 80 | {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_H, mei_me_pch_cfg)}, |
81 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_LPT_HR)}, | 81 | {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_W, mei_me_pch_cfg)}, |
82 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, MEI_DEV_ID_WPT_LP)}, | 82 | {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_LP, mei_me_pch_cfg)}, |
83 | {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_HR, mei_me_pch_cfg)}, | ||
84 | {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP, mei_me_pch_cfg)}, | ||
83 | 85 | ||
84 | /* required last entry */ | 86 | /* required last entry */ |
85 | {0, } | 87 | {0, } |
@@ -143,6 +145,7 @@ no_mei: | |||
143 | */ | 145 | */ |
144 | static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 146 | static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
145 | { | 147 | { |
148 | const struct mei_cfg *cfg = (struct mei_cfg *)(ent->driver_data); | ||
146 | struct mei_device *dev; | 149 | struct mei_device *dev; |
147 | struct mei_me_hw *hw; | 150 | struct mei_me_hw *hw; |
148 | int err; | 151 | int err; |
@@ -183,7 +186,7 @@ static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
183 | 186 | ||
184 | 187 | ||
185 | /* allocates and initializes the mei dev structure */ | 188 | /* allocates and initializes the mei dev structure */ |
186 | dev = mei_me_dev_init(pdev); | 189 | dev = mei_me_dev_init(pdev, cfg); |
187 | if (!dev) { | 190 | if (!dev) { |
188 | err = -ENOMEM; | 191 | err = -ENOMEM; |
189 | goto release_regions; | 192 | goto release_regions; |
diff --git a/drivers/misc/mei/pci-txe.c b/drivers/misc/mei/pci-txe.c index 2c3f5625a04e..2343c6236df9 100644 --- a/drivers/misc/mei/pci-txe.c +++ b/drivers/misc/mei/pci-txe.c | |||
@@ -36,7 +36,7 @@ | |||
36 | #include "hw-txe.h" | 36 | #include "hw-txe.h" |
37 | 37 | ||
38 | static const struct pci_device_id mei_txe_pci_tbl[] = { | 38 | static const struct pci_device_id mei_txe_pci_tbl[] = { |
39 | {PCI_DEVICE(PCI_VENDOR_ID_INTEL, 0x0F18)}, /* Baytrail */ | 39 | {MEI_PCI_DEVICE(0x0F18, mei_txe_cfg)}, /* Baytrail */ |
40 | {0, } | 40 | {0, } |
41 | }; | 41 | }; |
42 | MODULE_DEVICE_TABLE(pci, mei_txe_pci_tbl); | 42 | MODULE_DEVICE_TABLE(pci, mei_txe_pci_tbl); |
@@ -69,6 +69,7 @@ static void mei_txe_pci_iounmap(struct pci_dev *pdev, struct mei_txe_hw *hw) | |||
69 | */ | 69 | */ |
70 | static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 70 | static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) |
71 | { | 71 | { |
72 | const struct mei_cfg *cfg = (struct mei_cfg *)(ent->driver_data); | ||
72 | struct mei_device *dev; | 73 | struct mei_device *dev; |
73 | struct mei_txe_hw *hw; | 74 | struct mei_txe_hw *hw; |
74 | int err; | 75 | int err; |
@@ -99,7 +100,7 @@ static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
99 | } | 100 | } |
100 | 101 | ||
101 | /* allocates and initializes the mei dev structure */ | 102 | /* allocates and initializes the mei dev structure */ |
102 | dev = mei_txe_dev_init(pdev); | 103 | dev = mei_txe_dev_init(pdev, cfg); |
103 | if (!dev) { | 104 | if (!dev) { |
104 | err = -ENOMEM; | 105 | err = -ENOMEM; |
105 | goto release_regions; | 106 | goto release_regions; |