Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 433c0e04 authored by Bjorn Andersson's avatar Bjorn Andersson
Browse files

remoteproc: Split driver and consumer dereferencing



In order to be able to lock a rproc driver implementations only when
used by a client, we must differ between the dereference operation of a
client and the implementation itself.

This patch brings no functional change.

Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent 229b85a6
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -101,9 +101,9 @@ int dummy_rproc_example(struct rproc *my_rproc)
      On success, the new rproc is returned, and on failure, NULL.
      On success, the new rproc is returned, and on failure, NULL.


      Note: _never_ directly deallocate @rproc, even if it was not registered
      Note: _never_ directly deallocate @rproc, even if it was not registered
      yet. Instead, when you need to unroll rproc_alloc(), use rproc_put().
      yet. Instead, when you need to unroll rproc_alloc(), use rproc_free().


  void rproc_put(struct rproc *rproc)
  void rproc_free(struct rproc *rproc)
    - Free an rproc handle that was allocated by rproc_alloc.
    - Free an rproc handle that was allocated by rproc_alloc.
      This function essentially unrolls rproc_alloc(), by decrementing the
      This function essentially unrolls rproc_alloc(), by decrementing the
      rproc's refcount. It doesn't directly free rproc; that would happen
      rproc's refcount. It doesn't directly free rproc; that would happen
@@ -131,7 +131,7 @@ int dummy_rproc_example(struct rproc *my_rproc)
      has completed successfully.
      has completed successfully.


      After rproc_del() returns, @rproc is still valid, and its
      After rproc_del() returns, @rproc is still valid, and its
      last refcount should be decremented by calling rproc_put().
      last refcount should be decremented by calling rproc_free().


      Returns 0 on success and -EINVAL if @rproc isn't valid.
      Returns 0 on success and -EINVAL if @rproc isn't valid.


+2 −2
Original line number Original line Diff line number Diff line
@@ -261,7 +261,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
	return 0;
	return 0;


free_rproc:
free_rproc:
	rproc_put(rproc);
	rproc_free(rproc);


	return ret;
	return ret;
}
}
@@ -290,7 +290,7 @@ static int da8xx_rproc_remove(struct platform_device *pdev)
	disable_irq(drproc->irq);
	disable_irq(drproc->irq);


	rproc_del(rproc);
	rproc_del(rproc);
	rproc_put(rproc);
	rproc_free(rproc);


	return 0;
	return 0;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -215,7 +215,7 @@ static int omap_rproc_probe(struct platform_device *pdev)
	return 0;
	return 0;


free_rproc:
free_rproc:
	rproc_put(rproc);
	rproc_free(rproc);
	return ret;
	return ret;
}
}


@@ -224,7 +224,7 @@ static int omap_rproc_remove(struct platform_device *pdev)
	struct rproc *rproc = platform_get_drvdata(pdev);
	struct rproc *rproc = platform_get_drvdata(pdev);


	rproc_del(rproc);
	rproc_del(rproc);
	rproc_put(rproc);
	rproc_free(rproc);


	return 0;
	return 0;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -875,7 +875,7 @@ static int q6v5_probe(struct platform_device *pdev)
	return 0;
	return 0;


free_rproc:
free_rproc:
	rproc_put(rproc);
	rproc_free(rproc);


	return ret;
	return ret;
}
}
@@ -885,7 +885,7 @@ static int q6v5_remove(struct platform_device *pdev)
	struct q6v5 *qproc = platform_get_drvdata(pdev);
	struct q6v5 *qproc = platform_get_drvdata(pdev);


	rproc_del(qproc->rproc);
	rproc_del(qproc->rproc);
	rproc_put(qproc->rproc);
	rproc_free(qproc->rproc);


	return 0;
	return 0;
}
}
+2 −2
Original line number Original line Diff line number Diff line
@@ -585,7 +585,7 @@ static int wcnss_probe(struct platform_device *pdev)
	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
	return of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);


free_rproc:
free_rproc:
	rproc_put(rproc);
	rproc_free(rproc);


	return ret;
	return ret;
}
}
@@ -598,7 +598,7 @@ static int wcnss_remove(struct platform_device *pdev)


	qcom_smem_state_put(wcnss->state);
	qcom_smem_state_put(wcnss->state);
	rproc_del(wcnss->rproc);
	rproc_del(wcnss->rproc);
	rproc_put(wcnss->rproc);
	rproc_free(wcnss->rproc);


	return 0;
	return 0;
}
}
Loading