Lines Matching refs:drvdata

124  * @drvdata		- TRBE specific drvdata
134 struct trbe_drvdata *drvdata;
296 *this_cpu_ptr(buf->cpudata->drvdata->handle) = NULL;
785 struct trbe_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
795 WARN_ON(cpudata->drvdata != drvdata);
1002 *this_cpu_ptr(buf->cpudata->drvdata->handle) = handle;
1013 struct trbe_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
1019 WARN_ON(cpudata->drvdata != drvdata);
1032 struct trbe_drvdata *drvdata = dev_get_drvdata(csdev->dev.parent);
1038 WARN_ON(cpudata->drvdata != drvdata);
1084 *this_cpu_ptr(buf->cpudata->drvdata->handle) = NULL;
1095 struct trbe_drvdata *drvdata = cpudata->drvdata;
1107 if (!cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1222 struct trbe_drvdata *drvdata = info;
1223 struct trbe_cpudata *cpudata = this_cpu_ptr(drvdata->cpudata);
1226 enable_percpu_irq(drvdata->irq, IRQ_TYPE_NONE);
1231 struct trbe_drvdata *drvdata = info;
1232 struct trbe_cpudata *cpudata = this_cpu_ptr(drvdata->cpudata);
1234 disable_percpu_irq(drvdata->irq);
1239 static void arm_trbe_register_coresight_cpu(struct trbe_drvdata *drvdata, int cpu)
1241 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu);
1250 if (WARN_ON(!cpudata->drvdata))
1253 dev = &cpudata->drvdata->pdev->dev;
1285 cpumask_clear_cpu(cpu, &drvdata->supported_cpus);
1293 struct trbe_drvdata *drvdata = info;
1295 struct trbe_cpudata *cpudata = per_cpu_ptr(drvdata->cpudata, cpu);
1347 cpudata->drvdata = drvdata;
1350 cpumask_clear_cpu(cpu, &drvdata->supported_cpus);
1353 static void arm_trbe_remove_coresight_cpu(struct trbe_drvdata *drvdata, int cpu)
1363 static int arm_trbe_probe_coresight(struct trbe_drvdata *drvdata)
1367 drvdata->cpudata = alloc_percpu(typeof(*drvdata->cpudata));
1368 if (!drvdata->cpudata)
1371 for_each_cpu(cpu, &drvdata->supported_cpus) {
1373 if (smp_call_function_single(cpu, arm_trbe_probe_cpu, drvdata, 1))
1375 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1376 arm_trbe_register_coresight_cpu(drvdata, cpu);
1377 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1378 smp_call_function_single(cpu, arm_trbe_enable_cpu, drvdata, 1);
1383 static int arm_trbe_remove_coresight(struct trbe_drvdata *drvdata)
1387 for_each_cpu(cpu, &drvdata->supported_cpus) {
1388 smp_call_function_single(cpu, arm_trbe_disable_cpu, drvdata, 1);
1389 arm_trbe_remove_coresight_cpu(drvdata, cpu);
1391 free_percpu(drvdata->cpudata);
1395 static void arm_trbe_probe_hotplugged_cpu(struct trbe_drvdata *drvdata)
1398 arm_trbe_probe_cpu(drvdata);
1404 struct trbe_drvdata *drvdata = hlist_entry_safe(node, struct trbe_drvdata, hotplug_node);
1406 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus)) {
1413 arm_trbe_probe_hotplugged_cpu(drvdata);
1414 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1415 arm_trbe_register_coresight_cpu(drvdata, cpu);
1416 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1417 arm_trbe_enable_cpu(drvdata);
1419 arm_trbe_enable_cpu(drvdata);
1427 struct trbe_drvdata *drvdata = hlist_entry_safe(node, struct trbe_drvdata, hotplug_node);
1429 if (cpumask_test_cpu(cpu, &drvdata->supported_cpus))
1430 arm_trbe_disable_cpu(drvdata);
1434 static int arm_trbe_probe_cpuhp(struct trbe_drvdata *drvdata)
1444 ret = cpuhp_state_add_instance(trbe_online, &drvdata->hotplug_node);
1449 drvdata->trbe_online = trbe_online;
1453 static void arm_trbe_remove_cpuhp(struct trbe_drvdata *drvdata)
1455 cpuhp_state_remove_instance(drvdata->trbe_online, &drvdata->hotplug_node);
1456 cpuhp_remove_multi_state(drvdata->trbe_online);
1460 struct trbe_drvdata *drvdata)
1464 drvdata->irq = platform_get_irq(pdev, 0);
1465 if (drvdata->irq < 0) {
1467 return drvdata->irq;
1470 if (!irq_is_percpu(drvdata->irq)) {
1475 if (irq_get_percpu_devid_partition(drvdata->irq, &drvdata->supported_cpus))
1478 drvdata->handle = alloc_percpu(struct perf_output_handle *);
1479 if (!drvdata->handle)
1482 ret = request_percpu_irq(drvdata->irq, arm_trbe_irq_handler, DRVNAME, drvdata->handle);
1484 free_percpu(drvdata->handle);
1490 static void arm_trbe_remove_irq(struct trbe_drvdata *drvdata)
1492 free_percpu_irq(drvdata->irq, drvdata->handle);
1493 free_percpu(drvdata->handle);
1498 struct trbe_drvdata *drvdata;
1508 drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
1509 if (!drvdata)
1512 dev_set_drvdata(dev, drvdata);
1513 drvdata->pdev = pdev;
1514 ret = arm_trbe_probe_irq(pdev, drvdata);
1518 ret = arm_trbe_probe_coresight(drvdata);
1522 ret = arm_trbe_probe_cpuhp(drvdata);
1528 arm_trbe_remove_coresight(drvdata);
1530 arm_trbe_remove_irq(drvdata);
1536 struct trbe_drvdata *drvdata = platform_get_drvdata(pdev);
1538 arm_trbe_remove_cpuhp(drvdata);
1539 arm_trbe_remove_coresight(drvdata);
1540 arm_trbe_remove_irq(drvdata);