static int rtl8366_smi_read_byte1(struct rtl8366_smi *smi, u8 *data) { u32 t; /* read data */ rtl8366_smi_read_bits(smi, 8, &t); *data = (t & 0xff); /* send an ACK */ rtl8366_smi_write_bits(smi, 0x01, 1); return 0; }
static int rtl8366_smi_wait_for_ack(struct rtl8366_smi *smi) { int retry_cnt; retry_cnt = 0; do { u32 ack; rtl8366_smi_read_bits(smi, 1, &ack); if (ack == 0) break; if (++retry_cnt > RTL8366_SMI_ACK_RETRY_COUNT) return -EIO; } while (1); return 0; }
static int rtl8366_smi_wait_for_ack(struct rtl8366_smi *smi) { int retry_cnt; retry_cnt = 0; do { u32 ack; rtl8366_smi_read_bits(smi, 1, &ack); if (ack == 0) break; if (++retry_cnt > RTL8366_SMI_ACK_RETRY_COUNT) { dev_err(smi->parent, "ACK timeout\n"); return -ETIMEDOUT; } } while (1); return 0; }