Lines Matching refs:chan

143 static int open_channel(struct udevice *dev, struct scmi_optee_channel *chan,
171 param[0].u.value.a = chan->channel_id;
172 if (chan->dyn_shm)
198 static int invoke_cmd(struct udevice *dev, struct scmi_optee_channel *chan,
212 ret = scmi_msg_to_smt_msg(dev, &chan->smt, msg, &in_size);
225 scmi_write_msg_to_smt(dev, &chan->smt, msg);
237 ret = scmi_msg_from_smt_msg(dev, &chan->smt, msg,
240 ret = scmi_read_resp_from_smt(dev, &chan->smt, msg);
241 scmi_clear_smt_channel(&chan->smt);
247 static int prepare_shm(struct udevice *dev, struct scmi_optee_channel *chan,
253 if (!chan->dyn_shm)
256 chan->smt.size = SCMI_SHM_SIZE;
258 ret = tee_shm_alloc(sess->tee, chan->smt.size, 0, &sess->tee_shm);
264 chan->smt.buf = sess->tee_shm->addr;
271 struct scmi_optee_channel *chan = dev_get_plat(dev);
273 if (chan->dyn_shm)
281 struct scmi_optee_channel *chan = &channel->ref;
285 ret = open_channel(dev, chan, &sess);
289 ret = prepare_shm(dev, chan, &sess);
293 ret = invoke_cmd(dev, chan, &sess, msg);
303 static int setup_channel(struct udevice *dev, struct scmi_optee_channel *chan)
307 if (dev_read_u32(dev, "linaro,optee-channel-id", &chan->channel_id)) {
313 ret = scmi_dt_get_smt_buffer(dev, &chan->smt);
318 chan->dyn_shm = false;
320 chan->dyn_shm = true;
331 struct scmi_optee_channel *chan;
343 chan = calloc(1, sizeof(*chan));
344 if (!chan)
347 ret = setup_channel(protocol, chan);
349 free(chan);
353 *channel = container_of(chan, struct scmi_channel, ref);
360 struct scmi_optee_channel *chan = dev_get_plat(dev);
362 return setup_channel(dev, chan);
367 struct scmi_optee_channel *chan = dev_get_plat(dev);
372 ret = open_channel(dev, chan, &sess);