diff options
-rw-r--r-- | drivers/misc/mei/hw-me-regs.h | 1 | ||||
-rw-r--r-- | drivers/misc/mei/hw-me.c | 10 | ||||
-rw-r--r-- | drivers/misc/mei/hw-me.h | 6 |
3 files changed, 14 insertions, 3 deletions
diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h index 6cfb198d5daf..4c8f05ea3651 100644 --- a/drivers/misc/mei/hw-me-regs.h +++ b/drivers/misc/mei/hw-me-regs.h | |||
@@ -123,6 +123,7 @@ | |||
123 | 123 | ||
124 | /* Host Firmware Status Registers in PCI Config Space */ | 124 | /* Host Firmware Status Registers in PCI Config Space */ |
125 | #define PCI_CFG_HFS_1 0x40 | 125 | #define PCI_CFG_HFS_1 0x40 |
126 | # define PCI_CFG_HFS_1_D0I3_MSK 0x80000000 | ||
126 | #define PCI_CFG_HFS_2 0x48 | 127 | #define PCI_CFG_HFS_2 0x48 |
127 | #define PCI_CFG_HFS_3 0x60 | 128 | #define PCI_CFG_HFS_3 0x60 |
128 | #define PCI_CFG_HFS_4 0x64 | 129 | #define PCI_CFG_HFS_4 0x64 |
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c index 43d7101ff993..17d6894b0fd2 100644 --- a/drivers/misc/mei/hw-me.c +++ b/drivers/misc/mei/hw-me.c | |||
@@ -176,12 +176,20 @@ static int mei_me_fw_status(struct mei_device *dev, | |||
176 | */ | 176 | */ |
177 | static void mei_me_hw_config(struct mei_device *dev) | 177 | static void mei_me_hw_config(struct mei_device *dev) |
178 | { | 178 | { |
179 | struct pci_dev *pdev = to_pci_dev(dev->dev); | ||
179 | struct mei_me_hw *hw = to_me_hw(dev); | 180 | struct mei_me_hw *hw = to_me_hw(dev); |
180 | u32 hcsr = mei_hcsr_read(dev); | 181 | u32 hcsr, reg; |
182 | |||
181 | /* Doesn't change in runtime */ | 183 | /* Doesn't change in runtime */ |
184 | hcsr = mei_hcsr_read(dev); | ||
182 | dev->hbuf_depth = (hcsr & H_CBD) >> 24; | 185 | dev->hbuf_depth = (hcsr & H_CBD) >> 24; |
183 | 186 | ||
184 | hw->pg_state = MEI_PG_OFF; | 187 | hw->pg_state = MEI_PG_OFF; |
188 | |||
189 | reg = 0; | ||
190 | pci_read_config_dword(pdev, PCI_CFG_HFS_1, ®); | ||
191 | hw->d0i3_supported = | ||
192 | ((reg & PCI_CFG_HFS_1_D0I3_MSK) == PCI_CFG_HFS_1_D0I3_MSK); | ||
185 | } | 193 | } |
186 | 194 | ||
187 | /** | 195 | /** |
diff --git a/drivers/misc/mei/hw-me.h b/drivers/misc/mei/hw-me.h index 6022d52af6f6..cf64847a35b9 100644 --- a/drivers/misc/mei/hw-me.h +++ b/drivers/misc/mei/hw-me.h | |||
@@ -50,13 +50,15 @@ struct mei_cfg { | |||
50 | * struct mei_me_hw - me hw specific data | 50 | * struct mei_me_hw - me hw specific data |
51 | * | 51 | * |
52 | * @cfg: per device generation config and ops | 52 | * @cfg: per device generation config and ops |
53 | * @mem_addr: io memory address | 53 | * @mem_addr: io memory address |
54 | * @pg_state: power gating state | 54 | * @pg_state: power gating state |
55 | * @d0i3_supported: di03 support | ||
55 | */ | 56 | */ |
56 | struct mei_me_hw { | 57 | struct mei_me_hw { |
57 | const struct mei_cfg *cfg; | 58 | const struct mei_cfg *cfg; |
58 | void __iomem *mem_addr; | 59 | void __iomem *mem_addr; |
59 | enum mei_pg_state pg_state; | 60 | enum mei_pg_state pg_state; |
61 | bool d0i3_supported; | ||
60 | }; | 62 | }; |
61 | 63 | ||
62 | #define to_me_hw(dev) (struct mei_me_hw *)((dev)->hw) | 64 | #define to_me_hw(dev) (struct mei_me_hw *)((dev)->hw) |