static int f_ospi_indir_prepare_op(struct f_ospi *ospi, struct spi_mem *mem,
                                   const struct spi_mem_op *op)
 {
-       struct spi_device *spi = mem->spi;
        u32 irq_stat_en;
        int ret;
 
        if (ret)
                return ret;
 
-       f_ospi_config_clk(ospi, spi->max_speed_hz);
+       f_ospi_config_clk(ospi, op->max_freq);
 
        f_ospi_config_indir_protocol(ospi, mem, op);
 
        .exec_op = f_ospi_exec_op,
 };
 
+static const struct spi_controller_mem_caps f_ospi_mem_caps = {
+       .per_op_freq = true,
+};
+
 static int f_ospi_init(struct f_ospi *ospi)
 {
        int ret;
                | SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL
                | SPI_MODE_0 | SPI_MODE_1 | SPI_LSB_FIRST;
        ctlr->mem_ops = &f_ospi_mem_ops;
+       ctlr->mem_caps = &f_ospi_mem_caps;
        ctlr->bus_num = -1;
        of_property_read_u32(dev->of_node, "num-cs", &num_cs);
        if (num_cs > OSPI_NUM_CS) {