* Value for rest of the CS FLSHxxCR0 register would be zero.
  *
  */
-static void nxp_fspi_select_mem(struct nxp_fspi *f, struct spi_device *spi)
+static void nxp_fspi_select_mem(struct nxp_fspi *f, struct spi_device *spi,
+                               const struct spi_mem_op *op)
 {
-       unsigned long rate = spi->max_speed_hz;
+       unsigned long rate = op->max_freq;
        int ret;
        uint64_t size_kb;
 
                                   FSPI_STS0_ARB_IDLE, 1, POLL_TOUT, true);
        WARN_ON(err);
 
-       nxp_fspi_select_mem(f, mem->spi);
+       nxp_fspi_select_mem(f, mem->spi, op);
 
        nxp_fspi_prepare_lut(f, op);
        /*
        .get_name = nxp_fspi_get_name,
 };
 
+static const struct spi_controller_mem_caps nxp_fspi_mem_caps = {
+       .per_op_freq = true,
+};
+
 static int nxp_fspi_probe(struct platform_device *pdev)
 {
        struct spi_controller *ctlr;
        ctlr->bus_num = -1;
        ctlr->num_chipselect = NXP_FSPI_MAX_CHIPSELECT;
        ctlr->mem_ops = &nxp_fspi_mem_ops;
+       ctlr->mem_caps = &nxp_fspi_mem_caps;
 
        nxp_fspi_default_setup(f);