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
290 pchan = chan_info + subspace_id; in pcc_mbox_request_channel()
291 chan = pchan->chan.mchan; in pcc_mbox_request_channel()
301 return &pchan->chan; in pcc_mbox_request_channel()
311 void pcc_mbox_free_channel(struct pcc_mbox_chan *pchan) in pcc_mbox_free_channel() argument
313 struct mbox_chan *chan = pchan->mchan; in pcc_mbox_free_channel()
337 struct pcc_chan_info *pchan = chan->con_priv; in pcc_send_data() local
339 ret = pcc_chan_reg_read_modify_write(&pchan->cmd_update); in pcc_send_data()
343 return pcc_chan_reg_read_modify_write(&pchan->db); in pcc_send_data()
355 struct pcc_chan_info *pchan = chan->con_priv; in pcc_startup() local
358 if (pchan->plat_irq > 0) { in pcc_startup()
359 rc = devm_request_irq(chan->mbox->dev, pchan->plat_irq, pcc_mbox_irq, 0, in pcc_startup()
363 pchan->plat_irq); in pcc_startup()
378 struct pcc_chan_info *pchan = chan->con_priv; in pcc_shutdown() local
380 if (pchan->plat_irq > 0) in pcc_shutdown()
381 devm_free_irq(chan->mbox->dev, pchan->plat_irq, chan); in pcc_shutdown()
448 static int pcc_parse_subspace_irq(struct pcc_chan_info *pchan, in pcc_parse_subspace_irq() argument
459 pchan->plat_irq = pcc_map_interrupt(pcct_ss->platform_interrupt, in pcc_parse_subspace_irq()
461 if (pchan->plat_irq <= 0) { in pcc_parse_subspace_irq()
470 ret = pcc_chan_reg_init(&pchan->plat_irq_ack, in pcc_parse_subspace_irq()
480 ret = pcc_chan_reg_init(&pchan->plat_irq_ack, in pcc_parse_subspace_irq()
498 static int pcc_parse_subspace_db_reg(struct pcc_chan_info *pchan, in pcc_parse_subspace_db_reg() argument
508 ret = pcc_chan_reg_init(&pchan->db, in pcc_parse_subspace_db_reg()
518 ret = pcc_chan_reg_init(&pchan->db, in pcc_parse_subspace_db_reg()
525 ret = pcc_chan_reg_init(&pchan->cmd_complete, in pcc_parse_subspace_db_reg()
532 ret = pcc_chan_reg_init(&pchan->cmd_update, in pcc_parse_subspace_db_reg()
540 ret = pcc_chan_reg_init(&pchan->error, in pcc_parse_subspace_db_reg()
555 static void pcc_parse_subspace_shmem(struct pcc_chan_info *pchan, in pcc_parse_subspace_shmem() argument
562 pchan->chan.shmem_base_addr = pcct_ss->base_address; in pcc_parse_subspace_shmem()
563 pchan->chan.shmem_size = pcct_ss->length; in pcc_parse_subspace_shmem()
564 pchan->chan.latency = pcct_ss->latency; in pcc_parse_subspace_shmem()
565 pchan->chan.max_access_rate = pcct_ss->max_access_rate; in pcc_parse_subspace_shmem()
566 pchan->chan.min_turnaround_time = pcct_ss->min_turnaround_time; in pcc_parse_subspace_shmem()
571 pchan->chan.shmem_base_addr = pcct_ext->base_address; in pcc_parse_subspace_shmem()
572 pchan->chan.shmem_size = pcct_ext->length; in pcc_parse_subspace_shmem()
573 pchan->chan.latency = pcct_ext->latency; in pcc_parse_subspace_shmem()
574 pchan->chan.max_access_rate = pcct_ext->max_access_rate; in pcc_parse_subspace_shmem()
575 pchan->chan.min_turnaround_time = pcct_ext->min_turnaround_time; in pcc_parse_subspace_shmem()
678 struct pcc_chan_info *pchan = chan_info + i; in pcc_mbox_probe() local
680 pcc_mbox_channels[i].con_priv = pchan; in pcc_mbox_probe()
681 pchan->chan.mchan = &pcc_mbox_channels[i]; in pcc_mbox_probe()
691 rc = pcc_parse_subspace_irq(pchan, pcct_entry); in pcc_mbox_probe()
695 rc = pcc_parse_subspace_db_reg(pchan, pcct_entry); in pcc_mbox_probe()
699 pcc_parse_subspace_shmem(pchan, pcct_entry); in pcc_mbox_probe()