mmc: dw_mmc: make multiple instances of dw_mci_card_workqueue
commit95dcc2cb6c9c84555c29187f8b7cf39e83991a29
authorThomas Abraham <thomas.abraham@linaro.org>
Tue, 1 May 2012 21:57:36 +0000 (1 14:57 -0700)
committerChris Ball <cjb@laptop.org>
Wed, 9 May 2012 14:14:10 +0000 (9 10:14 -0400)
tree4e15db2d0f5dc52c3e5c1d5e2446986e6dc632c4
parentb41b6f1d1cb6a16c737c4699d2815112ec21faa6
mmc: dw_mmc: make multiple instances of dw_mci_card_workqueue

The variable 'dw_mci_card_workqueue' is a global variable shared between
multiple instances of the dw_mmc host controller. Due to this, data
corruption has been noticed when multiple instances of dw_mmc controllers
are actively reading/writing the media. Fix this by adding a instance
of 'struct workqueue_struct' for each host instance and removing the
global 'dw_mci_card_workqueue' instance.

Signed-off-by: Thomas Abraham <thomas.abraham@linaro.org>
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Will Newton <will.newton@imgtec.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/host/dw_mmc.c
include/linux/mmc/dw_mmc.h