// SPDX-License-Identifier: GPL-2.0 #include "softmac_core.h" int conv_str_to_byte(unsigned char *byte, unsigned char *str, int len) { int i, j = 0; unsigned char ch, val = 0; for (i = 0; i < (len * 2); i++) { /*convert to lower*/ ch = ((str[i] >= 'A' && str[i] <= 'Z') ? str[i] + 32 : str[i]); if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'f')) return -1; if (ch >= '0' && ch <= '9') /*check is digit*/ ch = ch - '0'; else ch = ch - 'a' + 10; val += ch; if (!(i%2)) val <<= 4; else { byte[j] = val; j++; val = 0; } } return 0; } int conv_byte_to_str(char *str, unsigned char *byte, int len) { int i; unsigned char digit0, digit1; for(i = 0; i < len; i ++) { digit0 = byte[i] & 0x0F; digit1 = (byte[i] >> 4) & 0x0F; str[i * 2] = (digit1 <= 9)? (digit1 + '0'):(digit1 - 0xA + 'A'); str[(i * 2) + 1] = (digit0 <= 9)? (digit0 + '0'): (digit0 - 0xA + 'A'); } str[i * 2] = '\0'; return 0; } int wait_for_scan_abort(struct img_priv *priv) { int count = 0; retry: if((priv->scan_abort_done == 0) && (count < SCAN_ABORT_TIMEOUT_TICKS)) { mutex_lock_timedout(&priv->scan_abort_done_sem, 1, 3*1000); count = count + 3; goto retry; } if(priv->scan_abort_done == 0) { pr_err("No SCAN_ABORT_DONE after %d ticks\n", SCAN_ABORT_TIMEOUT_TICKS); return -1; } return 0; } int wait_for_cancel_hw_roc(struct img_priv *priv) { int count = 0; retry: if((priv->cancel_hw_roc_done == 0) && (count < CANCEL_HW_ROC_TIMEOUT_TICKS)) { mutex_lock_timedout(&priv->cancel_hw_roc_done_sem, 1, 3*1000); count = count + 3; goto retry; } if(priv->cancel_hw_roc_done == 0) { pr_err("Didn't get CANCEL_HW_ROC_DONE after %d ticks\n", CANCEL_HW_ROC_TIMEOUT_TICKS); return -1; } return 0; } int wait_for_channel_prog_complete(struct img_priv *priv) { int count = 0; retry: if((priv->chan_prog_done == 0) && (count < CH_PROG_TIMEOUT_TICKS)) { mutex_lock_timedout(&priv->chan_prog_done_sem, 1, 3*1000); count = count + 3; goto retry; } if(priv->chan_prog_done == 0) { pr_err(" No channel prog done after %d ticks\n", CH_PROG_TIMEOUT_TICKS); return -1; } return 0; } int wait_for_reset_complete(struct img_priv *priv) { int count = 0; retry: if((priv->reset_complete == 0) && (count < RESET_TIMEOUT_TICKS)) { mutex_lock_timedout(&priv->reset_complete_sem, 1, 3*1000); count = count + 3; goto retry; } if(priv->reset_complete == 0) { pr_err(" No reset complete after %d ticks\n", RESET_TIMEOUT_TICKS); return -1; } return 0; }