Lines Matching refs:pchan
233 struct pcc_chan_info *pchan; in pcc_mbox_irq() local
238 pchan = chan->con_priv; in pcc_mbox_irq()
240 ret = pcc_chan_reg_read(&pchan->cmd_complete, &val); in pcc_mbox_irq()
245 val &= pchan->cmd_complete.status_mask; in pcc_mbox_irq()
250 ret = pcc_chan_reg_read(&pchan->error, &val); in pcc_mbox_irq()
253 val &= pchan->error.status_mask; in pcc_mbox_irq()
255 val &= ~pchan->error.status_mask; in pcc_mbox_irq()
256 pcc_chan_reg_write(&pchan->error, val); in pcc_mbox_irq()
260 if (pcc_chan_reg_read_modify_write(&pchan->plat_irq_ack)) in pcc_mbox_irq()
283 struct pcc_chan_info *pchan; in pcc_mbox_request_channel() local
291 pchan = chan_info + subspace_id; in pcc_mbox_request_channel()
292 chan = pchan->chan.mchan; in pcc_mbox_request_channel()
311 if (pchan->plat_irq > 0) { in pcc_mbox_request_channel()
314 rc = devm_request_irq(dev, pchan->plat_irq, pcc_mbox_irq, 0, in pcc_mbox_request_channel()
318 pchan->plat_irq); in pcc_mbox_request_channel()
319 pcc_mbox_free_channel(&pchan->chan); in pcc_mbox_request_channel()
324 return &pchan->chan; in pcc_mbox_request_channel()
334 void pcc_mbox_free_channel(struct pcc_mbox_chan *pchan) in pcc_mbox_free_channel() argument
336 struct pcc_chan_info *pchan_info = to_pcc_chan_info(pchan); in pcc_mbox_free_channel()
337 struct mbox_chan *chan = pchan->mchan; in pcc_mbox_free_channel()
371 struct pcc_chan_info *pchan = chan->con_priv; in pcc_send_data() local
373 ret = pcc_chan_reg_read_modify_write(&pchan->cmd_update); in pcc_send_data()
377 return pcc_chan_reg_read_modify_write(&pchan->db); in pcc_send_data()
442 static int pcc_parse_subspace_irq(struct pcc_chan_info *pchan, in pcc_parse_subspace_irq() argument
453 pchan->plat_irq = pcc_map_interrupt(pcct_ss->platform_interrupt, in pcc_parse_subspace_irq()
455 if (pchan->plat_irq <= 0) { in pcc_parse_subspace_irq()
464 ret = pcc_chan_reg_init(&pchan->plat_irq_ack, in pcc_parse_subspace_irq()
474 ret = pcc_chan_reg_init(&pchan->plat_irq_ack, in pcc_parse_subspace_irq()
492 static int pcc_parse_subspace_db_reg(struct pcc_chan_info *pchan, in pcc_parse_subspace_db_reg() argument
502 ret = pcc_chan_reg_init(&pchan->db, in pcc_parse_subspace_db_reg()
512 ret = pcc_chan_reg_init(&pchan->db, in pcc_parse_subspace_db_reg()
519 ret = pcc_chan_reg_init(&pchan->cmd_complete, in pcc_parse_subspace_db_reg()
526 ret = pcc_chan_reg_init(&pchan->cmd_update, in pcc_parse_subspace_db_reg()
534 ret = pcc_chan_reg_init(&pchan->error, in pcc_parse_subspace_db_reg()
549 static void pcc_parse_subspace_shmem(struct pcc_chan_info *pchan, in pcc_parse_subspace_shmem() argument
556 pchan->chan.shmem_base_addr = pcct_ss->base_address; in pcc_parse_subspace_shmem()
557 pchan->chan.shmem_size = pcct_ss->length; in pcc_parse_subspace_shmem()
558 pchan->chan.latency = pcct_ss->latency; in pcc_parse_subspace_shmem()
559 pchan->chan.max_access_rate = pcct_ss->max_access_rate; in pcc_parse_subspace_shmem()
560 pchan->chan.min_turnaround_time = pcct_ss->min_turnaround_time; in pcc_parse_subspace_shmem()
565 pchan->chan.shmem_base_addr = pcct_ext->base_address; in pcc_parse_subspace_shmem()
566 pchan->chan.shmem_size = pcct_ext->length; in pcc_parse_subspace_shmem()
567 pchan->chan.latency = pcct_ext->latency; in pcc_parse_subspace_shmem()
568 pchan->chan.max_access_rate = pcct_ext->max_access_rate; in pcc_parse_subspace_shmem()
569 pchan->chan.min_turnaround_time = pcct_ext->min_turnaround_time; in pcc_parse_subspace_shmem()
672 struct pcc_chan_info *pchan = chan_info + i; in pcc_mbox_probe() local
674 pcc_mbox_channels[i].con_priv = pchan; in pcc_mbox_probe()
675 pchan->chan.mchan = &pcc_mbox_channels[i]; in pcc_mbox_probe()
685 rc = pcc_parse_subspace_irq(pchan, pcct_entry); in pcc_mbox_probe()
689 rc = pcc_parse_subspace_db_reg(pchan, pcct_entry); in pcc_mbox_probe()
693 pcc_parse_subspace_shmem(pchan, pcct_entry); in pcc_mbox_probe()