soc: fsl: cpm1: qmc: Introduce available timeslots masks
authorHerve Codina <herve.codina@bootlin.com>
Tue, 5 Dec 2023 15:21:04 +0000 (16:21 +0100)
committerHerve Codina <herve.codina@bootlin.com>
Tue, 12 Dec 2023 09:29:20 +0000 (10:29 +0100)
Available timeslots masks define timeslots available for the related
channel. These timeslots are defined by the QMC binding.

Timeslots used are initialized to available timeslots but can be a
subset of available timeslots.
This prepares the dynamic timeslots management (ie. changing timeslots
at runtime).

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/20231205152116.122512-8-herve.codina@bootlin.com
drivers/soc/fsl/qe/qmc.c

index e716f13669a0d971eb8b834eceaefad85eafe97b..0413e25d4c67a9e4e83298dc2d142393b5138f08 100644 (file)
@@ -177,7 +177,9 @@ struct qmc_chan {
        struct qmc *qmc;
        void __iomem *s_param;
        enum qmc_mode mode;
+       u64     tx_ts_mask_avail;
        u64     tx_ts_mask;
+       u64     rx_ts_mask_avail;
        u64     rx_ts_mask;
        bool is_reverse_data;
 
@@ -875,7 +877,8 @@ static int qmc_of_parse_chans(struct qmc *qmc, struct device_node *np)
                        of_node_put(chan_np);
                        return ret;
                }
-               chan->tx_ts_mask = ts_mask;
+               chan->tx_ts_mask_avail = ts_mask;
+               chan->tx_ts_mask = chan->tx_ts_mask_avail;
 
                ret = of_property_read_u64(chan_np, "fsl,rx-ts-mask", &ts_mask);
                if (ret) {
@@ -884,7 +887,8 @@ static int qmc_of_parse_chans(struct qmc *qmc, struct device_node *np)
                        of_node_put(chan_np);
                        return ret;
                }
-               chan->rx_ts_mask = ts_mask;
+               chan->rx_ts_mask_avail = ts_mask;
+               chan->rx_ts_mask = chan->rx_ts_mask_avail;
 
                mode = "transparent";
                ret = of_property_read_string(chan_np, "fsl,operational-mode", &mode);