linux/drivers/staging/heci
Dongxiao Xu ad914a3ec5 Staging: heci: fix setting h_is bit in h_csr register
Host software could issue interrupts to ME firmware, using H_IG bit. While
Setting H_IG bit, host software should preserve all the other bits in H_CSR
unchanged. In the original function which sets H_CSR register, they first read
the register, then set some bits, and write the whole 32bits back to the
register. And that the special behavior of H_IS (write-one-to-zero) causes problem.
This patch fixes the issue in the following ways:

 - Modify heci_set_csr_register() function so that it doesn't change H_IS bit.
 - Add interface heci_csr_clear_his() to clear H_IS bit. This function is called
   after H_IS checking (dev->host_hw_state & H_IS == H_IS).
 - In original heci_csr_disable_interrupts() function, it not only clears H_IE
   bit, sometimes it also clears H_IS bit. This patch separates the two parts.
 - Avoid calling write_heci_register() function to set H_CSR register directly,
   and instead using heci_set_csr_register() function

Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2009-06-19 11:00:55 -07:00
..
heci_data_structures.h Staging: remove unused #include <linux/version.h>'s 2009-06-19 11:00:36 -07:00
heci_init.c Staging: heci: fix setting h_is bit in h_csr register 2009-06-19 11:00:55 -07:00
heci_interface.c Staging: heci: fix setting h_is bit in h_csr register 2009-06-19 11:00:55 -07:00
heci_interface.h Staging: heci: fix setting h_is bit in h_csr register 2009-06-19 11:00:55 -07:00
heci_main.c Staging: heci: fix typos and add wait after disconnect 2009-06-19 11:00:55 -07:00
heci_version.h
heci.h Staging: remove unused #include <linux/version.h>'s 2009-06-19 11:00:36 -07:00
interrupt.c Staging: heci: fix setting h_is bit in h_csr register 2009-06-19 11:00:55 -07:00
io_heci.c Staging: heci: fix softirq safe to unsafe spinlock issue 2009-06-19 11:00:55 -07:00
Kconfig
Makefile
TODO Staging: heci: add TODO file 2009-04-03 14:54:24 -07:00