gpu: ipu-v3: prg: add function to get channel configure status
authorLucas Stach <l.stach@pengutronix.de>
Tue, 11 Sep 2018 13:26:54 +0000 (15:26 +0200)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 22 Feb 2019 10:58:45 +0000 (11:58 +0100)
This allows channels using the PRG to check if a requested configuration
update has been applied or is still pending.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
[p.zabel@pengutronix.de: inverted logic: done -> pending]
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
drivers/gpu/ipu-v3/ipu-prg.c
include/video/imx-ipu-v3.h

index 38a3a9764e49a1c3b412920e52cfe330469b47ad..94b76badf677e78e799a0698d7c0c608e74d0ecc 100644 (file)
@@ -347,6 +347,22 @@ int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
 }
 EXPORT_SYMBOL_GPL(ipu_prg_channel_configure);
 
+bool ipu_prg_channel_configure_pending(struct ipuv3_channel *ipu_chan)
+{
+       int prg_chan = ipu_prg_ipu_to_prg_chan(ipu_chan->num);
+       struct ipu_prg *prg = ipu_chan->ipu->prg_priv;
+       struct ipu_prg_channel *chan;
+
+       if (prg_chan < 0)
+               return false;
+
+       chan = &prg->chan[prg_chan];
+       WARN_ON(!chan->enabled);
+
+       return ipu_pre_update_pending(prg->pres[chan->used_pre]);
+}
+EXPORT_SYMBOL_GPL(ipu_prg_channel_configure_pending);
+
 static int ipu_prg_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
index e582e8e7527afc9c7c37eb9bfaf6d070b807045b..b80b85f0d9d8c9cc5aa0854d9be50377cab3e516 100644 (file)
@@ -348,6 +348,7 @@ int ipu_prg_channel_configure(struct ipuv3_channel *ipu_chan,
                              unsigned int axi_id,  unsigned int width,
                              unsigned int height, unsigned int stride,
                              u32 format, uint64_t modifier, unsigned long *eba);
+bool ipu_prg_channel_configure_pending(struct ipuv3_channel *ipu_chan);
 
 /*
  * IPU CMOS Sensor Interface (csi) functions