[08/10] libcamera: mali-c55: Move entity parameter from constructor to ::init()
diff mbox series

Message ID 20250724065256.75175-9-dan.scally@ideasonboard.com
State New
Headers show
Series
  • Support memory input mode in mali-c55
Related show

Commit Message

Dan Scally July 24, 2025, 6:52 a.m. UTC
The MaliC55CameraData class takes a MediaEntity in its constructor.
When we support the memory input mode we won't have that when we
want to construct the class, so move the parameter to the init()
function instead.

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
---
 src/libcamera/pipeline/mali-c55/mali-c55.cpp | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

Comments

Kieran Bingham July 24, 2025, 8:46 a.m. UTC | #1
Quoting Daniel Scally (2025-07-24 07:52:54)
> The MaliC55CameraData class takes a MediaEntity in its constructor.
> When we support the memory input mode we won't have that when we
> want to construct the class, so move the parameter to the init()
> function instead.
> 
> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
> ---
>  src/libcamera/pipeline/mali-c55/mali-c55.cpp | 18 ++++++++++--------
>  1 file changed, 10 insertions(+), 8 deletions(-)
> 
> diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
> index 25540ba1..5944823d 100644
> --- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp
> +++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
> @@ -92,12 +92,12 @@ struct MaliC55FrameInfo {
>  class MaliC55CameraData : public Camera::Private
>  {
>  public:
> -       MaliC55CameraData(PipelineHandler *pipe, MediaEntity *entity)
> -               : Camera::Private(pipe), entity_(entity)
> +       MaliC55CameraData(PipelineHandler *pipe)
> +               : Camera::Private(pipe)
>         {
>         }
>  
> -       int init();
> +       int init(MediaEntity *entity);

What is the entity? Can we name it better? Is it an entity for the
Mali-C55? or the Sensor? Or something else? (Yes, it was already called
entity so this as a code move is fine - perhaps separate out the rename)

>         int loadIPA();
>  
>         /* Deflect these functionalities to either TPG or CameraSensor. */
> @@ -134,10 +134,12 @@ private:
>         Size tpgResolution_;
>  };
>  
> -int MaliC55CameraData::init()
> +int MaliC55CameraData::init(MediaEntity *entity)
>  {
>         int ret;
>  
> +       entity_ = entity;
> +
>         sd_ = std::make_unique<V4L2Subdevice>(entity_);
>         ret = sd_->open();
>         if (ret) {
> @@ -1567,9 +1569,9 @@ bool PipelineHandlerMaliC55::registerTPGCamera(MediaLink *link)
>         }
>  
>         std::unique_ptr<MaliC55CameraData> data =
> -               std::make_unique<MaliC55CameraData>(this, link->source()->entity());
> +               std::make_unique<MaliC55CameraData>(this);
>  
> -       if (data->init())
> +       if (data->init(link->source()->entity()))

Perhaps the entity should be called it's 'source' ? 

>                 return false;
>  
>         return registerMaliCamera(std::move(data), name);
> @@ -1594,8 +1596,8 @@ bool PipelineHandlerMaliC55::registerSensorCamera(MediaLink *ispLink)
>                         continue;
>  
>                 std::unique_ptr<MaliC55CameraData> data =
> -                       std::make_unique<MaliC55CameraData>(this, sensor);
> -               if (data->init())
> +                       std::make_unique<MaliC55CameraData>(this);
> +               if (data->init(sensor))
>                         return false;
>  
>                 data->properties_ = data->sensor_->properties();
> -- 
> 2.30.2
>

Patch
diff mbox series

diff --git a/src/libcamera/pipeline/mali-c55/mali-c55.cpp b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
index 25540ba1..5944823d 100644
--- a/src/libcamera/pipeline/mali-c55/mali-c55.cpp
+++ b/src/libcamera/pipeline/mali-c55/mali-c55.cpp
@@ -92,12 +92,12 @@  struct MaliC55FrameInfo {
 class MaliC55CameraData : public Camera::Private
 {
 public:
-	MaliC55CameraData(PipelineHandler *pipe, MediaEntity *entity)
-		: Camera::Private(pipe), entity_(entity)
+	MaliC55CameraData(PipelineHandler *pipe)
+		: Camera::Private(pipe)
 	{
 	}
 
-	int init();
+	int init(MediaEntity *entity);
 	int loadIPA();
 
 	/* Deflect these functionalities to either TPG or CameraSensor. */
@@ -134,10 +134,12 @@  private:
 	Size tpgResolution_;
 };
 
-int MaliC55CameraData::init()
+int MaliC55CameraData::init(MediaEntity *entity)
 {
 	int ret;
 
+	entity_ = entity;
+
 	sd_ = std::make_unique<V4L2Subdevice>(entity_);
 	ret = sd_->open();
 	if (ret) {
@@ -1567,9 +1569,9 @@  bool PipelineHandlerMaliC55::registerTPGCamera(MediaLink *link)
 	}
 
 	std::unique_ptr<MaliC55CameraData> data =
-		std::make_unique<MaliC55CameraData>(this, link->source()->entity());
+		std::make_unique<MaliC55CameraData>(this);
 
-	if (data->init())
+	if (data->init(link->source()->entity()))
 		return false;
 
 	return registerMaliCamera(std::move(data), name);
@@ -1594,8 +1596,8 @@  bool PipelineHandlerMaliC55::registerSensorCamera(MediaLink *ispLink)
 			continue;
 
 		std::unique_ptr<MaliC55CameraData> data =
-			std::make_unique<MaliC55CameraData>(this, sensor);
-		if (data->init())
+			std::make_unique<MaliC55CameraData>(this);
+		if (data->init(sensor))
 			return false;
 
 		data->properties_ = data->sensor_->properties();