diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2014-11-12 16:42:14 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-11-26 22:06:41 -0500 |
commit | 18caeb70f3aa694a3147709e6425f749bfd04ea7 (patch) | |
tree | 925ceddf2e7a3e017f04af97a9298dab8fd33f84 /drivers/misc | |
parent | c380b862ba46dcd0fe0b720dddaa8d821e787652 (diff) |
mei: kill cached host and me csr values
Kill host_hw_status and me_hw_state from me hw structure that used
to cache host and me csr values.
We do not use the cached values across the function calls anymore
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/mei/hw-me.c | 30 | ||||
-rw-r--r-- | drivers/misc/mei/hw-me.h | 7 |
2 files changed, 16 insertions, 21 deletions
diff --git a/drivers/misc/mei/hw-me.c b/drivers/misc/mei/hw-me.c index 4f2fd6fc1e23..7ce7cf4b6092 100644 --- a/drivers/misc/mei/hw-me.c +++ b/drivers/misc/mei/hw-me.c | |||
@@ -270,10 +270,10 @@ static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable) | |||
270 | static void mei_me_host_set_ready(struct mei_device *dev) | 270 | static void mei_me_host_set_ready(struct mei_device *dev) |
271 | { | 271 | { |
272 | struct mei_me_hw *hw = to_me_hw(dev); | 272 | struct mei_me_hw *hw = to_me_hw(dev); |
273 | u32 hcsr = mei_hcsr_read(hw); | ||
273 | 274 | ||
274 | hw->host_hw_state = mei_hcsr_read(hw); | 275 | hcsr |= H_IE | H_IG | H_RDY; |
275 | hw->host_hw_state |= H_IE | H_IG | H_RDY; | 276 | mei_hcsr_set(hw, hcsr); |
276 | mei_hcsr_set(hw, hw->host_hw_state); | ||
277 | } | 277 | } |
278 | 278 | ||
279 | /** | 279 | /** |
@@ -285,9 +285,9 @@ static void mei_me_host_set_ready(struct mei_device *dev) | |||
285 | static bool mei_me_host_is_ready(struct mei_device *dev) | 285 | static bool mei_me_host_is_ready(struct mei_device *dev) |
286 | { | 286 | { |
287 | struct mei_me_hw *hw = to_me_hw(dev); | 287 | struct mei_me_hw *hw = to_me_hw(dev); |
288 | u32 hcsr = mei_hcsr_read(hw); | ||
288 | 289 | ||
289 | hw->host_hw_state = mei_hcsr_read(hw); | 290 | return (hcsr & H_RDY) == H_RDY; |
290 | return (hw->host_hw_state & H_RDY) == H_RDY; | ||
291 | } | 291 | } |
292 | 292 | ||
293 | /** | 293 | /** |
@@ -299,9 +299,9 @@ static bool mei_me_host_is_ready(struct mei_device *dev) | |||
299 | static bool mei_me_hw_is_ready(struct mei_device *dev) | 299 | static bool mei_me_hw_is_ready(struct mei_device *dev) |
300 | { | 300 | { |
301 | struct mei_me_hw *hw = to_me_hw(dev); | 301 | struct mei_me_hw *hw = to_me_hw(dev); |
302 | u32 mecsr = mei_me_mecsr_read(hw); | ||
302 | 303 | ||
303 | hw->me_hw_state = mei_me_mecsr_read(hw); | 304 | return (mecsr & ME_RDY_HRA) == ME_RDY_HRA; |
304 | return (hw->me_hw_state & ME_RDY_HRA) == ME_RDY_HRA; | ||
305 | } | 305 | } |
306 | 306 | ||
307 | /** | 307 | /** |
@@ -356,12 +356,13 @@ static int mei_me_hw_start(struct mei_device *dev) | |||
356 | static unsigned char mei_hbuf_filled_slots(struct mei_device *dev) | 356 | static unsigned char mei_hbuf_filled_slots(struct mei_device *dev) |
357 | { | 357 | { |
358 | struct mei_me_hw *hw = to_me_hw(dev); | 358 | struct mei_me_hw *hw = to_me_hw(dev); |
359 | u32 hcsr; | ||
359 | char read_ptr, write_ptr; | 360 | char read_ptr, write_ptr; |
360 | 361 | ||
361 | hw->host_hw_state = mei_hcsr_read(hw); | 362 | hcsr = mei_hcsr_read(hw); |
362 | 363 | ||
363 | read_ptr = (char) ((hw->host_hw_state & H_CBRP) >> 8); | 364 | read_ptr = (char) ((hcsr & H_CBRP) >> 8); |
364 | write_ptr = (char) ((hw->host_hw_state & H_CBWP) >> 16); | 365 | write_ptr = (char) ((hcsr & H_CBWP) >> 16); |
365 | 366 | ||
366 | return (unsigned char) (write_ptr - read_ptr); | 367 | return (unsigned char) (write_ptr - read_ptr); |
367 | } | 368 | } |
@@ -474,13 +475,14 @@ static int mei_me_write_message(struct mei_device *dev, | |||
474 | static int mei_me_count_full_read_slots(struct mei_device *dev) | 475 | static int mei_me_count_full_read_slots(struct mei_device *dev) |
475 | { | 476 | { |
476 | struct mei_me_hw *hw = to_me_hw(dev); | 477 | struct mei_me_hw *hw = to_me_hw(dev); |
478 | u32 me_csr; | ||
477 | char read_ptr, write_ptr; | 479 | char read_ptr, write_ptr; |
478 | unsigned char buffer_depth, filled_slots; | 480 | unsigned char buffer_depth, filled_slots; |
479 | 481 | ||
480 | hw->me_hw_state = mei_me_mecsr_read(hw); | 482 | me_csr = mei_me_mecsr_read(hw); |
481 | buffer_depth = (unsigned char)((hw->me_hw_state & ME_CBD_HRA) >> 24); | 483 | buffer_depth = (unsigned char)((me_csr & ME_CBD_HRA) >> 24); |
482 | read_ptr = (char) ((hw->me_hw_state & ME_CBRP_HRA) >> 8); | 484 | read_ptr = (char) ((me_csr & ME_CBRP_HRA) >> 8); |
483 | write_ptr = (char) ((hw->me_hw_state & ME_CBWP_HRA) >> 16); | 485 | write_ptr = (char) ((me_csr & ME_CBWP_HRA) >> 16); |
484 | filled_slots = (unsigned char) (write_ptr - read_ptr); | 486 | filled_slots = (unsigned char) (write_ptr - read_ptr); |
485 | 487 | ||
486 | /* check for overflow */ | 488 | /* check for overflow */ |
diff --git a/drivers/misc/mei/hw-me.h b/drivers/misc/mei/hw-me.h index e6a59a62573a..e44ed1d03911 100644 --- a/drivers/misc/mei/hw-me.h +++ b/drivers/misc/mei/hw-me.h | |||
@@ -51,18 +51,11 @@ struct mei_cfg { | |||
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 | * @host_hw_state: cached host state | ||
55 | * @me_hw_state: cached me (fw) state | ||
56 | * @pg_state: power gating state | 54 | * @pg_state: power gating state |
57 | */ | 55 | */ |
58 | struct mei_me_hw { | 56 | struct mei_me_hw { |
59 | const struct mei_cfg *cfg; | 57 | const struct mei_cfg *cfg; |
60 | void __iomem *mem_addr; | 58 | void __iomem *mem_addr; |
61 | /* | ||
62 | * hw states of host and fw(ME) | ||
63 | */ | ||
64 | u32 host_hw_state; | ||
65 | u32 me_hw_state; | ||
66 | enum mei_pg_state pg_state; | 59 | enum mei_pg_state pg_state; |
67 | }; | 60 | }; |
68 | 61 | ||