Lines Matching full:blk

245 	struct qup_i2c_block	blk;
291 struct qup_i2c_block *blk = &qup->blk;
342 blk->tx_fifo_free += qup->out_blk_sz;
353 if (!blk->is_rx_blk_mode) {
354 blk->fifo_available += qup->in_fifo_sz;
357 blk->fifo_available += qup->in_blk_sz;
363 if (!blk->rx_bytes_read)
373 if (blk->is_tx_blk_mode && !(opflags & QUP_MX_OUTPUT_DONE))
485 struct qup_i2c_block *blk = &qup->blk;
495 blk->tx_fifo_free--;
501 while (blk->tx_fifo_free && qup->pos < msg->len) {
518 blk->tx_fifo_free--;
525 qup->blk.pos = 0;
526 qup->blk.data_len = msg->len;
527 qup->blk.count = DIV_ROUND_UP(msg->len, qup->blk_xfer_limit);
534 if (qup->blk.data_len > qup->blk_xfer_limit)
537 data_len = qup->blk.data_len;
576 int last = (qup->blk.pos == (qup->blk.count - 1)) && (qup->is_last);
582 if (qup->blk.pos == 0) {
598 tags[len++] = qup->blk.pos == (qup->blk.count - 1) ?
685 blocks = qup->blk.count;
689 while (qup->blk.pos < blocks) {
693 qup->blk.data_len -= tlen;
711 qup->blk.pos = i;
721 while (qup->blk.pos < blocks) {
725 qup->blk.data_len -= tlen;
740 qup->blk.pos = i;
948 struct qup_i2c_block *blk = &qup->blk;
953 while (blk->fifo_available && qup->pos < msg->len) {
962 blk->fifo_available--;
966 blk->rx_bytes_read = true;
985 struct qup_i2c_block *blk = &qup->blk;
989 blk->is_tx_blk_mode = blk->total_tx_len > qup->out_fifo_sz;
990 blk->is_rx_blk_mode = blk->total_rx_len > qup->in_fifo_sz;
992 if (blk->is_tx_blk_mode) {
995 writel(blk->total_tx_len, qup->base + QUP_MX_OUTPUT_CNT);
998 writel(blk->total_tx_len, qup->base + QUP_MX_WRITE_CNT);
1001 if (blk->total_rx_len) {
1002 if (blk->is_rx_blk_mode) {
1005 writel(blk->total_rx_len, qup->base + QUP_MX_INPUT_CNT);
1008 writel(blk->total_rx_len, qup->base + QUP_MX_READ_CNT);
1018 static void qup_i2c_clear_blk_v1(struct qup_i2c_block *blk)
1020 blk->tx_fifo_free = 0;
1021 blk->fifo_available = 0;
1022 blk->rx_bytes_read = false;
1027 struct qup_i2c_block *blk = &qup->blk;
1030 qup_i2c_clear_blk_v1(blk);
1044 if (!blk->is_tx_blk_mode) {
1045 blk->tx_fifo_free = qup->out_fifo_sz;
1071 struct qup_i2c_block *blk = &qup->blk;
1074 blk->total_tx_len = msg->len + 1;
1075 blk->total_rx_len = 0;
1082 struct qup_i2c_block *blk = &qup->blk;
1085 blk->total_tx_len = 2;
1086 blk->total_rx_len = qup->msg->len;
1154 struct qup_i2c_block *blk = &qup->blk;
1157 if (blk->is_tx_blk_mode)
1158 writel(qup->config_run | blk->total_tx_len,
1161 writel(qup->config_run | blk->total_tx_len,
1164 if (blk->total_rx_len) {
1165 if (blk->is_rx_blk_mode)
1166 writel(qup->config_run | blk->total_rx_len,
1169 writel(qup->config_run | blk->total_rx_len,
1185 struct qup_i2c_block *blk = &qup->blk;
1188 if (blk->is_tx_blk_mode) {
1195 if (blk->is_rx_blk_mode) {
1206 static void qup_i2c_clear_blk_v2(struct qup_i2c_block *blk)
1208 blk->send_last_word = false;
1209 blk->tx_tags_sent = false;
1210 blk->tx_fifo_data = 0;
1211 blk->tx_fifo_data_pos = 0;
1212 blk->tx_fifo_free = 0;
1214 blk->rx_tags_fetched = false;
1215 blk->rx_bytes_read = false;
1216 blk->rx_fifo_data = 0;
1217 blk->rx_fifo_data_pos = 0;
1218 blk->fifo_available = 0;
1224 struct qup_i2c_block *blk = &qup->blk;
1227 for (j = blk->rx_fifo_data_pos;
1228 blk->cur_blk_len && blk->fifo_available;
1229 blk->cur_blk_len--, blk->fifo_available--) {
1231 blk->rx_fifo_data = readl(qup->base + QUP_IN_FIFO_BASE);
1233 *(blk->cur_data++) = blk->rx_fifo_data;
1234 blk->rx_fifo_data >>= 8;
1242 blk->rx_fifo_data_pos = j;
1248 struct qup_i2c_block *blk = &qup->blk;
1250 blk->rx_fifo_data = readl(qup->base + QUP_IN_FIFO_BASE);
1251 blk->rx_fifo_data >>= blk->rx_tag_len * 8;
1252 blk->rx_fifo_data_pos = blk->rx_tag_len;
1253 blk->fifo_available -= blk->rx_tag_len;
1266 struct qup_i2c_block *blk = &qup->blk;
1268 if (!blk->rx_tags_fetched) {
1270 blk->rx_tags_fetched = true;
1274 if (!blk->cur_blk_len)
1275 blk->rx_bytes_read = true;
1286 struct qup_i2c_block *blk = &qup->blk;
1289 for (j = blk->tx_fifo_data_pos; *len && blk->tx_fifo_free;
1290 (*len)--, blk->tx_fifo_free--) {
1291 blk->tx_fifo_data |= *(*data)++ << (j * 8);
1293 writel(blk->tx_fifo_data,
1295 blk->tx_fifo_data = 0x0;
1302 blk->tx_fifo_data_pos = j;
1308 struct qup_i2c_block *blk = &qup->blk;
1310 qup_i2c_write_blk_data(qup, &blk->cur_tx_tags, &blk->tx_tag_len);
1311 if (blk->tx_fifo_data_pos)
1312 writel(blk->tx_fifo_data, qup->base + QUP_OUT_FIFO_BASE);
1339 struct qup_i2c_block *blk = &qup->blk;
1341 if (!blk->tx_tags_sent) {
1342 qup_i2c_write_blk_data(qup, &blk->cur_tx_tags,
1343 &blk->tx_tag_len);
1344 blk->tx_tags_sent = true;
1347 if (blk->send_last_word)
1350 qup_i2c_write_blk_data(qup, &blk->cur_data, &blk->cur_blk_len);
1351 if (!blk->cur_blk_len) {
1352 if (!blk->tx_fifo_data_pos)
1355 if (blk->tx_fifo_free)
1358 blk->send_last_word = true;
1364 writel(blk->tx_fifo_data, qup->base + QUP_OUT_FIFO_BASE);
1376 struct qup_i2c_block *blk = &qup->blk;
1392 blk->cur_data += 1;
1401 qup_i2c_clear_blk_v2(blk);
1423 if (!blk->is_tx_blk_mode) {
1424 blk->tx_fifo_free = qup->out_fifo_sz;
1462 struct qup_i2c_block *blk = &qup->blk;
1468 for (i = 0; i < blk->count; i++) {
1470 blk->pos = i;
1471 blk->cur_tx_tags = blk->tags;
1472 blk->cur_blk_len = data_len;
1473 blk->tx_tag_len =
1474 qup_i2c_set_tags(blk->cur_tx_tags, qup, qup->msg);
1476 blk->cur_data = msg_buf;
1479 blk->total_tx_len = blk->tx_tag_len;
1480 blk->rx_tag_len = 2;
1481 blk->total_rx_len = blk->rx_tag_len + data_len;
1483 blk->total_tx_len = blk->tx_tag_len + data_len;
1484 blk->total_rx_len = 0;
1488 !qup->is_last || i < blk->count - 1);
1509 blk->data_len -= qup->blk_xfer_limit;
1558 qup->blk.is_tx_blk_mode = max_tx_len > qup->out_fifo_sz -
1560 qup->blk.is_rx_blk_mode = max_rx_len > qup->in_fifo_sz -