INIT_LIST_HEAD(&adm->copps_list);
        spin_lock_init(&adm->copps_list_lock);
 
-       return of_platform_populate(dev->of_node, NULL, NULL, dev);
-}
-
-static int q6adm_remove(struct apr_device *adev)
-{
-       of_platform_depopulate(&adev->dev);
-
-       return 0;
+       return devm_of_platform_populate(dev);
 }
 
 #ifdef CONFIG_OF
 
 static struct apr_driver qcom_q6adm_driver = {
        .probe = q6adm_probe,
-       .remove = q6adm_remove,
        .callback = q6adm_callback,
        .driver = {
                .name = "qcom-q6adm",
 
 
        dev_set_drvdata(dev, afe);
 
-       return of_platform_populate(dev->of_node, NULL, NULL, dev);
-}
-
-static int q6afe_remove(struct apr_device *adev)
-{
-       of_platform_depopulate(&adev->dev);
-
-       return 0;
+       return devm_of_platform_populate(dev);
 }
 
 #ifdef CONFIG_OF
 
 static struct apr_driver qcom_q6afe_driver = {
        .probe = q6afe_probe,
-       .remove = q6afe_remove,
        .callback = q6afe_callback,
        .driver = {
                .name = "qcom-q6afe",
 
        spin_lock_init(&q6asm->slock);
        dev_set_drvdata(dev, q6asm);
 
-       return of_platform_populate(dev->of_node, NULL, NULL, dev);
-}
-
-static int q6asm_remove(struct apr_device *adev)
-{
-       of_platform_depopulate(&adev->dev);
-
-       return 0;
+       return devm_of_platform_populate(dev);
 }
 
 #ifdef CONFIG_OF
 
 static struct apr_driver qcom_q6asm_driver = {
        .probe = q6asm_probe,
-       .remove = q6asm_remove,
        .callback = q6asm_srvc_callback,
        .driver = {
                .name = "qcom-q6asm",