aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/omap_hsi
diff options
context:
space:
mode:
authorwonhee <wonhee48.seo@samsung.com>2012-04-09 12:10:18 +0900
committerBenoit Goby <benoit@android.com>2012-05-14 18:11:57 -0700
commit52c33735e828ee7fb6e8f0393a048876788209b2 (patch)
tree3c8000244724194cf700a08bdd0e9fb4b0e198e2 /drivers/omap_hsi
parent4aeec73388a82397cd7fd217634ca74bb9d7431b (diff)
downloadkernel_samsung_tuna-52c33735e828ee7fb6e8f0393a048876788209b2.zip
kernel_samsung_tuna-52c33735e828ee7fb6e8f0393a048876788209b2.tar.gz
kernel_samsung_tuna-52c33735e828ee7fb6e8f0393a048876788209b2.tar.bz2
OMAP4+: HSI: Prevent HSI clock disable while ACWAKE is high
If HSI clocks are disabled while ACWAKE is high, it is possible that ACWAKE goes low unexpectedly. This is not seen on Link Layers which do not comply with MIPI, because in this case ACWAKE and CAWAKE are high at the same time, so HSI clocks are not disabled. But for Link Layers which comply with MIPI, CAWAKE will go low independtly of CAWAKE, and HSI driver might cut the clocks while ACWAKE is high, which causes CAWAKE to have an unknwon value. Bug: 6217861, 6207265 Change-Id: I3098619a645277af12eb0ba82ca0e1508bd3ce03 Signed-off-by: Djamil Elaidi <d-elaidi@ti.com> Signed-off-by: wonhee <wonhee48.seo@samsung.com>
Diffstat (limited to 'drivers/omap_hsi')
-rw-r--r--drivers/omap_hsi/hsi_driver_int.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/omap_hsi/hsi_driver_int.c b/drivers/omap_hsi/hsi_driver_int.c
index ac71bc7..c9691ac 100644
--- a/drivers/omap_hsi/hsi_driver_int.c
+++ b/drivers/omap_hsi/hsi_driver_int.c
@@ -62,6 +62,7 @@ bool hsi_is_channel_busy(struct hsi_channel *ch)
}
/* Check if a HSI port is busy :
+ * - ACWAKE is high
* - data transfer (Write) is ongoing for a given HSI channel
* - CAWAKE is high
* - CAWAKE is not used (receiver in 3-wires mode)
@@ -91,7 +92,7 @@ bool hsi_is_hsi_port_busy(struct hsi_port *pport)
return true;
}
- if (cur_cawake) {
+ if (cur_cawake || pport->acwake_status) {
dev_dbg(hsi_ctrl->dev, "Port %d: WAKE status: acwake_status %d,"
"cur_cawake %d", pport->port_number,
pport->acwake_status, cur_cawake);