rsi: fix for sdio interface setup in 9116
Issue: RS-9116 Card is not responding after firmware got loaded. Root cause: After firmware got loaded, we need to reset the program counter and few device specific registers. Those registers were not resetted properly. Fix: Properly resetting those registers. Signed-off-by: Ganapathi Kondraju <ganapathirajukondraju@gmail.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
committed by
Kalle Valo
parent
6334dea888
commit
8f9af6309b
@@ -944,7 +944,7 @@ static int rsi_sdio_ta_reset(struct rsi_hw *adapter)
|
|||||||
put_unaligned_le32(TA_HOLD_THREAD_VALUE, data);
|
put_unaligned_le32(TA_HOLD_THREAD_VALUE, data);
|
||||||
addr = TA_HOLD_THREAD_REG | RSI_SD_REQUEST_MASTER;
|
addr = TA_HOLD_THREAD_REG | RSI_SD_REQUEST_MASTER;
|
||||||
status = rsi_sdio_write_register_multiple(adapter, addr,
|
status = rsi_sdio_write_register_multiple(adapter, addr,
|
||||||
(u8 *)&data,
|
(u8 *)data,
|
||||||
RSI_9116_REG_SIZE);
|
RSI_9116_REG_SIZE);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
rsi_dbg(ERR_ZONE, "Unable to hold TA threads\n");
|
rsi_dbg(ERR_ZONE, "Unable to hold TA threads\n");
|
||||||
@@ -954,7 +954,7 @@ static int rsi_sdio_ta_reset(struct rsi_hw *adapter)
|
|||||||
put_unaligned_le32(TA_SOFT_RST_CLR, data);
|
put_unaligned_le32(TA_SOFT_RST_CLR, data);
|
||||||
addr = TA_SOFT_RESET_REG | RSI_SD_REQUEST_MASTER;
|
addr = TA_SOFT_RESET_REG | RSI_SD_REQUEST_MASTER;
|
||||||
status = rsi_sdio_write_register_multiple(adapter, addr,
|
status = rsi_sdio_write_register_multiple(adapter, addr,
|
||||||
(u8 *)&data,
|
(u8 *)data,
|
||||||
RSI_9116_REG_SIZE);
|
RSI_9116_REG_SIZE);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
rsi_dbg(ERR_ZONE, "Unable to get TA out of reset\n");
|
rsi_dbg(ERR_ZONE, "Unable to get TA out of reset\n");
|
||||||
@@ -964,7 +964,7 @@ static int rsi_sdio_ta_reset(struct rsi_hw *adapter)
|
|||||||
put_unaligned_le32(TA_PC_ZERO, data);
|
put_unaligned_le32(TA_PC_ZERO, data);
|
||||||
addr = TA_TH0_PC_REG | RSI_SD_REQUEST_MASTER;
|
addr = TA_TH0_PC_REG | RSI_SD_REQUEST_MASTER;
|
||||||
status = rsi_sdio_write_register_multiple(adapter, addr,
|
status = rsi_sdio_write_register_multiple(adapter, addr,
|
||||||
(u8 *)&data,
|
(u8 *)data,
|
||||||
RSI_9116_REG_SIZE);
|
RSI_9116_REG_SIZE);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
rsi_dbg(ERR_ZONE, "Unable to Reset TA PC value\n");
|
rsi_dbg(ERR_ZONE, "Unable to Reset TA PC value\n");
|
||||||
@@ -975,7 +975,7 @@ static int rsi_sdio_ta_reset(struct rsi_hw *adapter)
|
|||||||
put_unaligned_le32(TA_RELEASE_THREAD_VALUE, data);
|
put_unaligned_le32(TA_RELEASE_THREAD_VALUE, data);
|
||||||
addr = TA_RELEASE_THREAD_REG | RSI_SD_REQUEST_MASTER;
|
addr = TA_RELEASE_THREAD_REG | RSI_SD_REQUEST_MASTER;
|
||||||
status = rsi_sdio_write_register_multiple(adapter, addr,
|
status = rsi_sdio_write_register_multiple(adapter, addr,
|
||||||
(u8 *)&data,
|
(u8 *)data,
|
||||||
RSI_9116_REG_SIZE);
|
RSI_9116_REG_SIZE);
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
rsi_dbg(ERR_ZONE, "Unable to release TA threads\n");
|
rsi_dbg(ERR_ZONE, "Unable to release TA threads\n");
|
||||||
|
|||||||
Reference in New Issue
Block a user