if (subtype != CORESIGHT_DEV_SUBTYPE_SOURCE_PROC &&
            subtype != CORESIGHT_DEV_SUBTYPE_SOURCE_SOFTWARE &&
+           subtype != CORESIGHT_DEV_SUBTYPE_SOURCE_TPDM &&
            subtype != CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS) {
                dev_err(&csdev->dev, "wrong device subtype in %s\n", function);
                return -EINVAL;
                per_cpu(tracer_path, cpu) = path;
                break;
        case CORESIGHT_DEV_SUBTYPE_SOURCE_SOFTWARE:
+       case CORESIGHT_DEV_SUBTYPE_SOURCE_TPDM:
        case CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS:
                /*
                 * Use the hash of source's device name as ID
                per_cpu(tracer_path, cpu) = NULL;
                break;
        case CORESIGHT_DEV_SUBTYPE_SOURCE_SOFTWARE:
+       case CORESIGHT_DEV_SUBTYPE_SOURCE_TPDM:
        case CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS:
                hash = hashlen_hash(hashlen_string(NULL, dev_name(&csdev->dev)));
                /* Find the path by the hash. */
 
        if (!desc.name)
                return -ENOMEM;
        desc.type = CORESIGHT_DEV_TYPE_SOURCE;
-       desc.subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS;
+       desc.subtype.source_subtype = CORESIGHT_DEV_SUBTYPE_SOURCE_TPDM;
        desc.ops = &tpdm_cs_ops;
        desc.pdata = adev->dev.platform_data;
        desc.dev = &adev->dev;
 
        CORESIGHT_DEV_SUBTYPE_SOURCE_PROC,
        CORESIGHT_DEV_SUBTYPE_SOURCE_BUS,
        CORESIGHT_DEV_SUBTYPE_SOURCE_SOFTWARE,
+       CORESIGHT_DEV_SUBTYPE_SOURCE_TPDM,
        CORESIGHT_DEV_SUBTYPE_SOURCE_OTHERS,
 };