Lines Matching defs:scmi_info

70 	struct scmi_smc *scmi_info = data;
72 scmi_rx_callback(scmi_info->cinfo,
73 shmem_read_header(scmi_info->shmem), NULL);
88 static inline void smc_channel_lock_init(struct scmi_smc *scmi_info)
91 atomic_set(&scmi_info->inflight, INFLIGHT_NONE);
93 mutex_init(&scmi_info->shmem_lock);
106 smc_channel_lock_acquire(struct scmi_smc *scmi_info,
110 spin_until_cond(smc_xfer_inflight(xfer, &scmi_info->inflight));
112 mutex_lock(&scmi_info->shmem_lock);
115 static inline void smc_channel_lock_release(struct scmi_smc *scmi_info)
118 atomic_set(&scmi_info->inflight, INFLIGHT_NONE);
120 mutex_unlock(&scmi_info->shmem_lock);
127 struct scmi_smc *scmi_info;
137 scmi_info = devm_kzalloc(dev, sizeof(*scmi_info), GFP_KERNEL);
138 if (!scmi_info)
155 scmi_info->shmem = devm_ioremap(dev, res.start, size);
156 if (!scmi_info->shmem) {
166 scmi_info->param_page = SHMEM_PAGE(res.start);
167 scmi_info->param_offset = SHMEM_OFFSET(res.start);
174 scmi_info->irq = of_irq_get_byname(cdev->of_node, "a2p");
175 if (scmi_info->irq > 0) {
176 ret = request_irq(scmi_info->irq, smc_msg_done_isr,
177 IRQF_NO_SUSPEND, dev_name(dev), scmi_info);
186 scmi_info->func_id = func_id;
187 scmi_info->cinfo = cinfo;
188 smc_channel_lock_init(scmi_info);
189 cinfo->transport_info = scmi_info;
197 struct scmi_smc *scmi_info = cinfo->transport_info;
203 if (!scmi_info)
207 if (scmi_info->irq > 0)
208 free_irq(scmi_info->irq, scmi_info);
211 scmi_info->cinfo = NULL;
219 struct scmi_smc *scmi_info = cinfo->transport_info;
221 unsigned long page = scmi_info->param_page;
222 unsigned long offset = scmi_info->param_offset;
228 smc_channel_lock_acquire(scmi_info, xfer);
230 shmem_tx_prepare(scmi_info->shmem, xfer, cinfo);
232 arm_smccc_1_1_invoke(scmi_info->func_id, page, offset, 0, 0, 0, 0, 0,
237 smc_channel_lock_release(scmi_info);
247 struct scmi_smc *scmi_info = cinfo->transport_info;
249 shmem_fetch_response(scmi_info->shmem, xfer);
255 struct scmi_smc *scmi_info = cinfo->transport_info;
257 smc_channel_lock_release(scmi_info);