diff options
author | wonhee <wonhee48.seo@samsung.com> | 2012-04-09 12:10:18 +0900 |
---|---|---|
committer | Benoit Goby <benoit@android.com> | 2012-05-14 18:11:57 -0700 |
commit | 52c33735e828ee7fb6e8f0393a048876788209b2 (patch) | |
tree | 3c8000244724194cf700a08bdd0e9fb4b0e198e2 /drivers/omap_hsi | |
parent | 4aeec73388a82397cd7fd217634ca74bb9d7431b (diff) | |
download | kernel_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.c | 3 |
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); |