[v2,2/4] ipa: rpi: Add FE globals as a parameter to applyDecompand()
diff mbox series

Message ID 20251003121821.659081-3-naush@raspberrypi.com
State New
Headers show
Series
  • Raspberry Pi: Decompanding support
Related show

Commit Message

Naushir Patuck Oct. 3, 2025, 12:15 p.m. UTC
Don't let applyDecompand() directly change the FE global enables.
Instead pass the global mask into the function and set it in the caller.
This will be needed when a future commit will add setting the decompand
initial values.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Tested-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
---
 src/ipa/rpi/pisp/pisp.cpp | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

Comments

David Plowman Oct. 3, 2025, 2:07 p.m. UTC | #1
Hi Naush

Thanks for the patch.

On Fri, 3 Oct 2025 at 13:18, Naushir Patuck <naush@raspberrypi.com> wrote:
>
> Don't let applyDecompand() directly change the FE global enables.
> Instead pass the global mask into the function and set it in the caller.
> This will be needed when a future commit will add setting the decompand
> initial values.
>
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> Tested-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>

Reviewed-by: David Plowman <david.plowman@raspberrypi.com>

Thanks!
David

> ---
>  src/ipa/rpi/pisp/pisp.cpp | 15 +++++++++------
>  1 file changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp
> index 14ece12b0895..f5be39aca5ee 100644
> --- a/src/ipa/rpi/pisp/pisp.cpp
> +++ b/src/ipa/rpi/pisp/pisp.cpp
> @@ -256,7 +256,7 @@ private:
>         void applyLensShading(const AlscStatus *alscStatus,
>                               pisp_be_global_config &global);
>         void applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global);
> -       void applyDecompand(const DecompandStatus *decompandStatus);
> +       void applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal);
>         void applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global);
>         void applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus,
>                       pisp_be_global_config &global);
> @@ -368,6 +368,9 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams &params,
>         {
>                 /* All Frontend config goes first, we do not want to hold the FE lock for long! */
>                 std::scoped_lock<FrontEnd> lf(*fe_);
> +               pisp_fe_global_config feGlobal;
> +
> +               fe_->GetGlobal(feGlobal);
>
>                 if (noiseStatus)
>                         applyFocusStats(noiseStatus);
> @@ -375,13 +378,14 @@ void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams &params,
>                 DecompandStatus *decompandStatus =
>                         rpiMetadata.getLocked<DecompandStatus>("decompand.status");
>                 if (decompandStatus)
> -                       applyDecompand(decompandStatus);
> +                       applyDecompand(decompandStatus, feGlobal);
>
>                 BlackLevelStatus *blackLevelStatus =
>                         rpiMetadata.getLocked<BlackLevelStatus>("black_level.status");
>                 if (blackLevelStatus)
>                         applyBlackLevel(blackLevelStatus, global);
>
> +               fe_->SetGlobal(feGlobal);
>         }
>
>         CacStatus *cacStatus = rpiMetadata.getLocked<CacStatus>("cac.status");
> @@ -728,16 +732,15 @@ void IpaPiSP::applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global
>         be_->SetDpc(dpc);
>  }
>
> -void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus)
> +void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal)
>  {
> -       pisp_fe_global_config feGlobal;
>         pisp_fe_decompand_config decompand = {};
>
>         if (!generateDecompandLut(decompandStatus->decompandCurve, decompand.lut)) {
>                 fe_->SetDecompand(decompand);
>                 feGlobal.enables |= PISP_FE_ENABLE_DECOMPAND;
> -               fe_->SetGlobal(feGlobal);
> -       }
> +       } else
> +               feGlobal.enables &= ~PISP_FE_ENABLE_DECOMPAND;
>  }
>
>  void IpaPiSP::applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global)
> --
> 2.43.0
>

Patch
diff mbox series

diff --git a/src/ipa/rpi/pisp/pisp.cpp b/src/ipa/rpi/pisp/pisp.cpp
index 14ece12b0895..f5be39aca5ee 100644
--- a/src/ipa/rpi/pisp/pisp.cpp
+++ b/src/ipa/rpi/pisp/pisp.cpp
@@ -256,7 +256,7 @@  private:
 	void applyLensShading(const AlscStatus *alscStatus,
 			      pisp_be_global_config &global);
 	void applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global);
-	void applyDecompand(const DecompandStatus *decompandStatus);
+	void applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal);
 	void applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global);
 	void applyTdn(const TdnStatus *tdnStatus, const DeviceStatus *deviceStatus,
 		      pisp_be_global_config &global);
@@ -368,6 +368,9 @@  void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams &params,
 	{
 		/* All Frontend config goes first, we do not want to hold the FE lock for long! */
 		std::scoped_lock<FrontEnd> lf(*fe_);
+		pisp_fe_global_config feGlobal;
+
+		fe_->GetGlobal(feGlobal);
 
 		if (noiseStatus)
 			applyFocusStats(noiseStatus);
@@ -375,13 +378,14 @@  void IpaPiSP::platformPrepareIsp([[maybe_unused]] const PrepareParams &params,
 		DecompandStatus *decompandStatus =
 			rpiMetadata.getLocked<DecompandStatus>("decompand.status");
 		if (decompandStatus)
-			applyDecompand(decompandStatus);
+			applyDecompand(decompandStatus, feGlobal);
 
 		BlackLevelStatus *blackLevelStatus =
 			rpiMetadata.getLocked<BlackLevelStatus>("black_level.status");
 		if (blackLevelStatus)
 			applyBlackLevel(blackLevelStatus, global);
 
+		fe_->SetGlobal(feGlobal);
 	}
 
 	CacStatus *cacStatus = rpiMetadata.getLocked<CacStatus>("cac.status");
@@ -728,16 +732,15 @@  void IpaPiSP::applyDPC(const DpcStatus *dpcStatus, pisp_be_global_config &global
 	be_->SetDpc(dpc);
 }
 
-void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus)
+void IpaPiSP::applyDecompand(const DecompandStatus *decompandStatus, pisp_fe_global_config &feGlobal)
 {
-	pisp_fe_global_config feGlobal;
 	pisp_fe_decompand_config decompand = {};
 
 	if (!generateDecompandLut(decompandStatus->decompandCurve, decompand.lut)) {
 		fe_->SetDecompand(decompand);
 		feGlobal.enables |= PISP_FE_ENABLE_DECOMPAND;
-		fe_->SetGlobal(feGlobal);
-	}
+	} else
+		feGlobal.enables &= ~PISP_FE_ENABLE_DECOMPAND;
 }
 
 void IpaPiSP::applySdn(const SdnStatus *sdnStatus, pisp_be_global_config &global)