Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 18caeb70 authored by Tomas Winkler's avatar Tomas Winkler Committed by Greg Kroah-Hartman
Browse files

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: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c380b862
Loading
Loading
Loading
Loading
+16 −14
Original line number Original line Diff line number Diff line
@@ -270,10 +270,10 @@ static int mei_me_hw_reset(struct mei_device *dev, bool intr_enable)
static void mei_me_host_set_ready(struct mei_device *dev)
static void mei_me_host_set_ready(struct mei_device *dev)
{
{
	struct mei_me_hw *hw = to_me_hw(dev);
	struct mei_me_hw *hw = to_me_hw(dev);
	u32 hcsr = mei_hcsr_read(hw);


	hw->host_hw_state = mei_hcsr_read(hw);
	hcsr |= H_IE | H_IG | H_RDY;
	hw->host_hw_state |= H_IE | H_IG | H_RDY;
	mei_hcsr_set(hw, hcsr);
	mei_hcsr_set(hw, hw->host_hw_state);
}
}


/**
/**
@@ -285,9 +285,9 @@ static void mei_me_host_set_ready(struct mei_device *dev)
static bool mei_me_host_is_ready(struct mei_device *dev)
static bool mei_me_host_is_ready(struct mei_device *dev)
{
{
	struct mei_me_hw *hw = to_me_hw(dev);
	struct mei_me_hw *hw = to_me_hw(dev);
	u32 hcsr = mei_hcsr_read(hw);


	hw->host_hw_state = mei_hcsr_read(hw);
	return (hcsr & H_RDY) == H_RDY;
	return (hw->host_hw_state & H_RDY) == H_RDY;
}
}


/**
/**
@@ -299,9 +299,9 @@ static bool mei_me_host_is_ready(struct mei_device *dev)
static bool mei_me_hw_is_ready(struct mei_device *dev)
static bool mei_me_hw_is_ready(struct mei_device *dev)
{
{
	struct mei_me_hw *hw = to_me_hw(dev);
	struct mei_me_hw *hw = to_me_hw(dev);
	u32 mecsr = mei_me_mecsr_read(hw);


	hw->me_hw_state = mei_me_mecsr_read(hw);
	return (mecsr & ME_RDY_HRA) == ME_RDY_HRA;
	return (hw->me_hw_state & ME_RDY_HRA) == ME_RDY_HRA;
}
}


/**
/**
@@ -356,12 +356,13 @@ static int mei_me_hw_start(struct mei_device *dev)
static unsigned char mei_hbuf_filled_slots(struct mei_device *dev)
static unsigned char mei_hbuf_filled_slots(struct mei_device *dev)
{
{
	struct mei_me_hw *hw = to_me_hw(dev);
	struct mei_me_hw *hw = to_me_hw(dev);
	u32 hcsr;
	char read_ptr, write_ptr;
	char read_ptr, write_ptr;


	hw->host_hw_state = mei_hcsr_read(hw);
	hcsr = mei_hcsr_read(hw);


	read_ptr = (char) ((hw->host_hw_state & H_CBRP) >> 8);
	read_ptr = (char) ((hcsr & H_CBRP) >> 8);
	write_ptr = (char) ((hw->host_hw_state & H_CBWP) >> 16);
	write_ptr = (char) ((hcsr & H_CBWP) >> 16);


	return (unsigned char) (write_ptr - read_ptr);
	return (unsigned char) (write_ptr - read_ptr);
}
}
@@ -474,13 +475,14 @@ static int mei_me_write_message(struct mei_device *dev,
static int mei_me_count_full_read_slots(struct mei_device *dev)
static int mei_me_count_full_read_slots(struct mei_device *dev)
{
{
	struct mei_me_hw *hw = to_me_hw(dev);
	struct mei_me_hw *hw = to_me_hw(dev);
	u32 me_csr;
	char read_ptr, write_ptr;
	char read_ptr, write_ptr;
	unsigned char buffer_depth, filled_slots;
	unsigned char buffer_depth, filled_slots;


	hw->me_hw_state = mei_me_mecsr_read(hw);
	me_csr = mei_me_mecsr_read(hw);
	buffer_depth = (unsigned char)((hw->me_hw_state & ME_CBD_HRA) >> 24);
	buffer_depth = (unsigned char)((me_csr & ME_CBD_HRA) >> 24);
	read_ptr = (char) ((hw->me_hw_state & ME_CBRP_HRA) >> 8);
	read_ptr = (char) ((me_csr & ME_CBRP_HRA) >> 8);
	write_ptr = (char) ((hw->me_hw_state & ME_CBWP_HRA) >> 16);
	write_ptr = (char) ((me_csr & ME_CBWP_HRA) >> 16);
	filled_slots = (unsigned char) (write_ptr - read_ptr);
	filled_slots = (unsigned char) (write_ptr - read_ptr);


	/* check for overflow */
	/* check for overflow */
+0 −7
Original line number Original line Diff line number Diff line
@@ -51,18 +51,11 @@ struct mei_cfg {
 *
 *
 * @cfg: per device generation config and ops
 * @cfg: per device generation config and ops
 * @mem_addr:  io memory address
 * @mem_addr:  io memory address
 * @host_hw_state: cached host state
 * @me_hw_state:   cached me (fw) state
 * @pg_state:      power gating state
 * @pg_state:      power gating state
 */
 */
struct mei_me_hw {
struct mei_me_hw {
	const struct mei_cfg *cfg;
	const struct mei_cfg *cfg;
	void __iomem *mem_addr;
	void __iomem *mem_addr;
	/*
	 * hw states of host and fw(ME)
	 */
	u32 host_hw_state;
	u32 me_hw_state;
	enum mei_pg_state pg_state;
	enum mei_pg_state pg_state;
};
};