Lines Matching refs:csdev

33 cscfg_get_feat_csdev(struct coresight_device *csdev, const char *name)  in cscfg_get_feat_csdev()  argument
37 list_for_each_entry(feat_csdev, &csdev->feature_csdev_list, node) { in cscfg_get_feat_csdev()
46 cscfg_alloc_csdev_cfg(struct coresight_device *csdev, int nr_feats) in cscfg_alloc_csdev_cfg() argument
49 struct device *dev = csdev->dev.parent; in cscfg_alloc_csdev_cfg()
58 config_csdev->csdev = csdev; in cscfg_alloc_csdev_cfg()
63 static int cscfg_add_csdev_cfg(struct coresight_device *csdev, in cscfg_add_csdev_cfg() argument
74 feat_csdev = cscfg_get_feat_csdev(csdev, config_desc->feat_ref_names[i]); in cscfg_add_csdev_cfg()
81 config_csdev = cscfg_alloc_csdev_cfg(csdev, in cscfg_add_csdev_cfg()
92 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_add_csdev_cfg()
93 list_add(&config_csdev->node, &csdev->config_csdev_list); in cscfg_add_csdev_cfg()
94 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_add_csdev_cfg()
111 err = cscfg_add_csdev_cfg(csdev_item->csdev, config_desc); in cscfg_add_cfg_to_csdevs()
123 cscfg_alloc_csdev_feat(struct coresight_device *csdev, struct cscfg_feature_desc *feat_desc) in cscfg_alloc_csdev_feat() argument
126 struct device *dev = csdev->dev.parent; in cscfg_alloc_csdev_feat()
169 feat_csdev->csdev = csdev; in cscfg_alloc_csdev_feat()
175 static int cscfg_load_feat_csdev(struct coresight_device *csdev, in cscfg_load_feat_csdev() argument
186 feat_csdev = cscfg_alloc_csdev_feat(csdev, feat_desc); in cscfg_load_feat_csdev()
191 err = ops->load_feat(csdev, feat_csdev); in cscfg_load_feat_csdev()
197 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_load_feat_csdev()
198 list_add(&feat_csdev->node, &csdev->feature_csdev_list); in cscfg_load_feat_csdev()
199 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_load_feat_csdev()
216 err = cscfg_load_feat_csdev(csdev_item->csdev, feat_desc, &csdev_item->ops); in cscfg_add_feat_to_csdevs()
325 cscfg_csdev_get_feat_from_desc(struct coresight_device *csdev, in cscfg_csdev_get_feat_from_desc() argument
330 list_for_each_entry(feat_csdev, &csdev->feature_csdev_list, node) { in cscfg_csdev_get_feat_from_desc()
361 feat_csdev = cscfg_csdev_get_feat_from_desc(csdev_item->csdev, feat_desc); in cscfg_update_feat_param_val()
391 static void cscfg_remove_owned_csdev_configs(struct coresight_device *csdev, void *load_owner) in cscfg_remove_owned_csdev_configs() argument
395 if (list_empty(&csdev->config_csdev_list)) in cscfg_remove_owned_csdev_configs()
398 guard(raw_spinlock_irqsave)(&csdev->cscfg_csdev_lock); in cscfg_remove_owned_csdev_configs()
400 list_for_each_entry_safe(config_csdev, tmp, &csdev->config_csdev_list, node) { in cscfg_remove_owned_csdev_configs()
406 static void cscfg_remove_owned_csdev_features(struct coresight_device *csdev, void *load_owner) in cscfg_remove_owned_csdev_features() argument
410 if (list_empty(&csdev->feature_csdev_list)) in cscfg_remove_owned_csdev_features()
413 list_for_each_entry_safe(feat_csdev, tmp, &csdev->feature_csdev_list, node) { in cscfg_remove_owned_csdev_features()
460 cscfg_remove_owned_csdev_configs(csdev_item->csdev, load_owner); in cscfg_unload_owned_cfgs_feats()
461 cscfg_remove_owned_csdev_features(csdev_item->csdev, load_owner); in cscfg_unload_owned_cfgs_feats()
717 static int cscfg_add_cfgs_csdev(struct coresight_device *csdev) in cscfg_add_cfgs_csdev() argument
723 err = cscfg_add_csdev_cfg(csdev, config_desc); in cscfg_add_cfgs_csdev()
731 static int cscfg_add_feats_csdev(struct coresight_device *csdev, in cscfg_add_feats_csdev() argument
743 err = cscfg_load_feat_csdev(csdev, feat_desc, ops); in cscfg_add_feats_csdev()
752 static int cscfg_list_add_csdev(struct coresight_device *csdev, in cscfg_list_add_csdev() argument
763 csdev_item->csdev = csdev; in cscfg_list_add_csdev()
768 INIT_LIST_HEAD(&csdev->feature_csdev_list); in cscfg_list_add_csdev()
769 INIT_LIST_HEAD(&csdev->config_csdev_list); in cscfg_list_add_csdev()
770 raw_spin_lock_init(&csdev->cscfg_csdev_lock); in cscfg_list_add_csdev()
776 static void cscfg_list_remove_csdev(struct coresight_device *csdev) in cscfg_list_remove_csdev() argument
781 if (csdev_item->csdev == csdev) { in cscfg_list_remove_csdev()
800 int cscfg_register_csdev(struct coresight_device *csdev, in cscfg_register_csdev() argument
809 ret = cscfg_list_add_csdev(csdev, match_flags, ops); in cscfg_register_csdev()
814 ret = cscfg_add_feats_csdev(csdev, match_flags, ops); in cscfg_register_csdev()
816 cscfg_list_remove_csdev(csdev); in cscfg_register_csdev()
820 ret = cscfg_add_cfgs_csdev(csdev); in cscfg_register_csdev()
822 cscfg_list_remove_csdev(csdev); in cscfg_register_csdev()
826 pr_info("CSCFG registered %s", dev_name(&csdev->dev)); in cscfg_register_csdev()
839 void cscfg_unregister_csdev(struct coresight_device *csdev) in cscfg_unregister_csdev() argument
842 cscfg_list_remove_csdev(csdev); in cscfg_unregister_csdev()
855 void cscfg_csdev_reset_feats(struct coresight_device *csdev) in cscfg_csdev_reset_feats() argument
860 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_reset_feats()
861 if (list_empty(&csdev->feature_csdev_list)) in cscfg_csdev_reset_feats()
864 list_for_each_entry(feat_csdev, &csdev->feature_csdev_list, node) in cscfg_csdev_reset_feats()
868 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_reset_feats()
1061 int cscfg_csdev_enable_active_config(struct coresight_device *csdev, in cscfg_csdev_enable_active_config() argument
1077 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_enable_active_config()
1078 list_for_each_entry(config_csdev_item, &csdev->config_csdev_list, node) { in cscfg_csdev_enable_active_config()
1083 csdev->active_cscfg_ctxt = (void *)config_csdev_active; in cscfg_csdev_enable_active_config()
1087 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_enable_active_config()
1108 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_enable_active_config()
1109 if (csdev->active_cscfg_ctxt) in cscfg_csdev_enable_active_config()
1113 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_enable_active_config()
1136 void cscfg_csdev_disable_active_config(struct coresight_device *csdev) in cscfg_csdev_disable_active_config() argument
1146 raw_spin_lock_irqsave(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_disable_active_config()
1147 config_csdev = (struct cscfg_config_csdev *)csdev->active_cscfg_ctxt; in cscfg_csdev_disable_active_config()
1154 csdev->active_cscfg_ctxt = NULL; in cscfg_csdev_disable_active_config()
1155 raw_spin_unlock_irqrestore(&csdev->cscfg_csdev_lock, flags); in cscfg_csdev_disable_active_config()