Lines Matching refs:edge
170 struct qcom_smd_edge *edge; member
352 struct qcom_smd_edge *edge = channel->edge; in qcom_smd_signal_channel() local
354 regmap_write(edge->ipc_regmap, edge->ipc_offset, BIT(edge->ipc_bit)); in qcom_smd_signal_channel()
400 struct qcom_smd_edge *edge = channel->edge; in qcom_smd_channel_set_state() local
406 dev_dbg(edge->smd->dev, "set_state(%s, %d)\n", channel->name, state); in qcom_smd_channel_set_state()
606 struct qcom_smd_edge *edge = data; in qcom_smd_edge_intr() local
614 spin_lock(&edge->channels_lock); in qcom_smd_edge_intr()
615 list_for_each_entry(channel, &edge->channels, list) { in qcom_smd_edge_intr()
620 spin_unlock(&edge->channels_lock); in qcom_smd_edge_intr()
627 available = qcom_smem_get_free_space(edge->remote_pid); in qcom_smd_edge_intr()
628 if (available != edge->smem_available) { in qcom_smd_edge_intr()
629 edge->smem_available = available; in qcom_smd_edge_intr()
630 edge->need_rescan = true; in qcom_smd_edge_intr()
635 schedule_work(&edge->work); in qcom_smd_edge_intr()
940 struct qcom_smd_edge *edge = channel->edge; in qcom_smd_create_device() local
942 struct qcom_smd *smd = edge->smd; in qcom_smd_create_device()
954 node = qcom_smd_match_channel(edge->of_node, channel->name); in qcom_smd_create_device()
956 edge->of_node->name, in qcom_smd_create_device()
1018 static struct qcom_smd_channel *qcom_smd_create_channel(struct qcom_smd_edge *edge, in qcom_smd_create_channel() argument
1024 struct qcom_smd *smd = edge->smd; in qcom_smd_create_channel()
1035 channel->edge = edge; in qcom_smd_create_channel()
1044 info = qcom_smem_get(edge->remote_pid, smem_info_item, &info_size); in qcom_smd_create_channel()
1065 fifo_base = qcom_smem_get(edge->remote_pid, smem_fifo_item, &fifo_size); in qcom_smd_create_channel()
1097 static void qcom_discover_channels(struct qcom_smd_edge *edge) in qcom_discover_channels() argument
1102 struct qcom_smd *smd = edge->smd; in qcom_discover_channels()
1111 alloc_tbl = qcom_smem_get(edge->remote_pid, in qcom_discover_channels()
1119 if (test_bit(i, edge->allocated[tbl])) in qcom_discover_channels()
1131 if ((eflags & SMD_CHANNEL_FLAGS_EDGE_MASK) != edge->edge_id) in qcom_discover_channels()
1138 channel = qcom_smd_create_channel(edge, info_id, fifo_id, entry->name); in qcom_discover_channels()
1142 spin_lock_irqsave(&edge->channels_lock, flags); in qcom_discover_channels()
1143 list_add(&channel->list, &edge->channels); in qcom_discover_channels()
1144 spin_unlock_irqrestore(&edge->channels_lock, flags); in qcom_discover_channels()
1147 set_bit(i, edge->allocated[tbl]); in qcom_discover_channels()
1151 schedule_work(&edge->work); in qcom_discover_channels()
1165 struct qcom_smd_edge *edge = container_of(work, in qcom_channel_state_worker() local
1173 if (edge->need_rescan) { in qcom_channel_state_worker()
1174 edge->need_rescan = false; in qcom_channel_state_worker()
1175 qcom_discover_channels(edge); in qcom_channel_state_worker()
1182 list_for_each_entry(channel, &edge->channels, list) { in qcom_channel_state_worker()
1198 list_for_each_entry(channel, &edge->channels, list) { in qcom_channel_state_worker()
1217 struct qcom_smd_edge *edge) in qcom_smd_parse_edge() argument
1224 INIT_LIST_HEAD(&edge->channels); in qcom_smd_parse_edge()
1225 spin_lock_init(&edge->channels_lock); in qcom_smd_parse_edge()
1227 INIT_WORK(&edge->work, qcom_channel_state_worker); in qcom_smd_parse_edge()
1229 edge->of_node = of_node_get(node); in qcom_smd_parse_edge()
1239 node->name, edge); in qcom_smd_parse_edge()
1245 edge->irq = irq; in qcom_smd_parse_edge()
1248 ret = of_property_read_u32(node, key, &edge->edge_id); in qcom_smd_parse_edge()
1254 edge->remote_pid = QCOM_SMEM_HOST_ANY; in qcom_smd_parse_edge()
1256 of_property_read_u32(node, key, &edge->remote_pid); in qcom_smd_parse_edge()
1264 edge->ipc_regmap = syscon_node_to_regmap(syscon_np); in qcom_smd_parse_edge()
1265 if (IS_ERR(edge->ipc_regmap)) in qcom_smd_parse_edge()
1266 return PTR_ERR(edge->ipc_regmap); in qcom_smd_parse_edge()
1269 ret = of_property_read_u32_index(node, key, 1, &edge->ipc_offset); in qcom_smd_parse_edge()
1275 ret = of_property_read_u32_index(node, key, 2, &edge->ipc_bit); in qcom_smd_parse_edge()
1286 struct qcom_smd_edge *edge; in qcom_smd_probe() local
1309 edge = &smd->edges[i++]; in qcom_smd_probe()
1310 edge->smd = smd; in qcom_smd_probe()
1312 ret = qcom_smd_parse_edge(&pdev->dev, node, edge); in qcom_smd_probe()
1316 edge->need_rescan = true; in qcom_smd_probe()
1317 schedule_work(&edge->work); in qcom_smd_probe()
1332 struct qcom_smd_edge *edge; in qcom_smd_remove() local
1337 edge = &smd->edges[i]; in qcom_smd_remove()
1339 disable_irq(edge->irq); in qcom_smd_remove()
1340 cancel_work_sync(&edge->work); in qcom_smd_remove()
1342 list_for_each_entry(channel, &edge->channels, list) { in qcom_smd_remove()