Lines Matching full:master

112 	u16 master;  member
133 struct cci_master master[NUM_MASTERS]; member
147 complete(&cci->master[0].irq_complete); in cci_isr()
148 if (cci->master[1].master) in cci_isr()
149 complete(&cci->master[1].irq_complete); in cci_isr()
156 cci->master[0].status = 0; in cci_isr()
157 complete(&cci->master[0].irq_complete); in cci_isr()
164 cci->master[1].status = 0; in cci_isr()
165 complete(&cci->master[1].irq_complete); in cci_isr()
185 cci->master[0].status = -ENXIO; in cci_isr()
187 cci->master[0].status = -EIO; in cci_isr()
196 cci->master[1].status = -ENXIO; in cci_isr()
198 cci->master[1].status = -EIO; in cci_isr()
209 struct cci_master *master; in cci_halt() local
213 dev_err(cci->dev, "Unsupported master idx (%u)\n", master_num); in cci_halt()
218 master = &cci->master[master_num]; in cci_halt()
220 reinit_completion(&master->irq_complete); in cci_halt()
223 if (!wait_for_completion_timeout(&master->irq_complete, CCI_TIMEOUT)) { in cci_halt()
235 * master[0].xxx for waiting on it. in cci_reset()
237 reinit_completion(&cci->master[0].irq_complete); in cci_reset()
240 if (!wait_for_completion_timeout(&cci->master[0].irq_complete, in cci_reset()
267 int mode = cci->master[i].mode; in cci_init()
270 if (!cci->master[i].cci) in cci_init()
294 static int cci_run_queue(struct cci *cci, u8 master, u8 queue) in cci_run_queue() argument
298 val = readl(cci->base + CCI_I2C_Mm_Qn_CUR_WORD_CNT(master, queue)); in cci_run_queue()
299 writel(val, cci->base + CCI_I2C_Mm_Qn_EXEC_WORD_CNT(master, queue)); in cci_run_queue()
301 reinit_completion(&cci->master[master].irq_complete); in cci_run_queue()
302 val = BIT(master * 2 + queue); in cci_run_queue()
305 if (!wait_for_completion_timeout(&cci->master[master].irq_complete, in cci_run_queue()
307 dev_err(cci->dev, "master %d queue %d timeout\n", in cci_run_queue()
308 master, queue); in cci_run_queue()
314 return cci->master[master].status; in cci_run_queue()
317 static int cci_validate_queue(struct cci *cci, u8 master, u8 queue) in cci_validate_queue() argument
321 val = readl(cci->base + CCI_I2C_Mm_Qn_CUR_WORD_CNT(master, queue)); in cci_validate_queue()
329 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_validate_queue()
331 return cci_run_queue(cci, master, queue); in cci_validate_queue()
334 static int cci_i2c_read(struct cci *cci, u16 master, in cci_i2c_read() argument
346 ret = cci_validate_queue(cci, master, queue); in cci_i2c_read()
351 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_i2c_read()
354 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_i2c_read()
356 ret = cci_run_queue(cci, master, queue); in cci_i2c_read()
360 words_read = readl(cci->base + CCI_I2C_Mm_READ_BUF_LEVEL(master)); in cci_i2c_read()
369 val = readl(cci->base + CCI_I2C_Mm_READ_DATA(master)); in cci_i2c_read()
387 static int cci_i2c_write(struct cci *cci, u16 master, in cci_i2c_write() argument
399 ret = cci_validate_queue(cci, master, queue); in cci_i2c_write()
404 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_i2c_write()
416 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_i2c_write()
420 writel(val, cci->base + CCI_I2C_Mm_Qn_LOAD_DATA(master, queue)); in cci_i2c_write()
422 return cci_run_queue(cci, master, queue); in cci_i2c_write()
437 ret = cci_i2c_read(cci, cci_master->master, in cci_xfer()
441 ret = cci_i2c_write(cci, cci_master->master, in cci_xfer()
542 struct cci_master *master; in cci_probe() local
557 master = &cci->master[idx]; in cci_probe()
558 master->adap.quirks = &cci->data->quirks; in cci_probe()
559 master->adap.algo = &cci_algo; in cci_probe()
560 master->adap.dev.parent = dev; in cci_probe()
561 master->adap.dev.of_node = of_node_get(child); in cci_probe()
562 master->master = idx; in cci_probe()
563 master->cci = cci; in cci_probe()
565 i2c_set_adapdata(&master->adap, master); in cci_probe()
566 snprintf(master->adap.name, sizeof(master->adap.name), "Qualcomm-CCI"); in cci_probe()
568 master->mode = I2C_MODE_STANDARD; in cci_probe()
572 master->mode = I2C_MODE_FAST; in cci_probe()
574 master->mode = I2C_MODE_FAST_PLUS; in cci_probe()
577 init_completion(&master->irq_complete); in cci_probe()
629 if (!cci->master[i].cci) in cci_probe()
632 ret = i2c_add_adapter(&cci->master[i].adap); in cci_probe()
634 of_node_put(cci->master[i].adap.dev.of_node); in cci_probe()
646 if (cci->master[i].cci) { in cci_probe()
647 i2c_del_adapter(&cci->master[i].adap); in cci_probe()
648 of_node_put(cci->master[i].adap.dev.of_node); in cci_probe()
665 if (cci->master[i].cci) { in cci_remove()
666 i2c_del_adapter(&cci->master[i].adap); in cci_remove()
667 of_node_put(cci->master[i].adap.dev.of_node); in cci_remove()