Lines Matching refs:scmi_info

74 	struct scmi_smc *scmi_info = data;
76 scmi_rx_callback(scmi_info->cinfo,
77 shmem_read_header(scmi_info->shmem), NULL);
92 static inline void smc_channel_lock_init(struct scmi_smc *scmi_info)
95 atomic_set(&scmi_info->inflight, INFLIGHT_NONE);
97 mutex_init(&scmi_info->shmem_lock);
110 smc_channel_lock_acquire(struct scmi_smc *scmi_info,
114 spin_until_cond(smc_xfer_inflight(xfer, &scmi_info->inflight));
116 mutex_lock(&scmi_info->shmem_lock);
119 static inline void smc_channel_lock_release(struct scmi_smc *scmi_info)
122 atomic_set(&scmi_info->inflight, INFLIGHT_NONE);
124 mutex_unlock(&scmi_info->shmem_lock);
132 struct scmi_smc *scmi_info;
142 scmi_info = devm_kzalloc(dev, sizeof(*scmi_info), GFP_KERNEL);
143 if (!scmi_info)
160 scmi_info->shmem = devm_ioremap(dev, res.start, size);
161 if (!scmi_info->shmem) {
171 void __iomem *ptr = (void __iomem *)scmi_info->shmem + size - 8;
183 scmi_info->param_page = SHMEM_PAGE(res.start);
184 scmi_info->param_offset = SHMEM_OFFSET(res.start);
191 scmi_info->irq = of_irq_get_byname(cdev->of_node, "a2p");
192 if (scmi_info->irq > 0) {
193 ret = request_irq(scmi_info->irq, smc_msg_done_isr,
194 IRQF_NO_SUSPEND, dev_name(dev), scmi_info);
203 scmi_info->func_id = func_id;
204 scmi_info->cap_id = cap_id;
205 scmi_info->cinfo = cinfo;
206 smc_channel_lock_init(scmi_info);
207 cinfo->transport_info = scmi_info;
215 struct scmi_smc *scmi_info = cinfo->transport_info;
221 if (!scmi_info)
225 if (scmi_info->irq > 0)
226 free_irq(scmi_info->irq, scmi_info);
229 scmi_info->cinfo = NULL;
237 struct scmi_smc *scmi_info = cinfo->transport_info;
244 smc_channel_lock_acquire(scmi_info, xfer);
246 shmem_tx_prepare(scmi_info->shmem, xfer, cinfo);
248 if (scmi_info->cap_id != ULONG_MAX)
249 arm_smccc_1_1_invoke(scmi_info->func_id, scmi_info->cap_id, 0,
252 arm_smccc_1_1_invoke(scmi_info->func_id, scmi_info->param_page,
253 scmi_info->param_offset, 0, 0, 0, 0, 0,
258 smc_channel_lock_release(scmi_info);
268 struct scmi_smc *scmi_info = cinfo->transport_info;
270 shmem_fetch_response(scmi_info->shmem, xfer);
276 struct scmi_smc *scmi_info = cinfo->transport_info;
278 smc_channel_lock_release(scmi_info);