ext-decoder = <0>;  /* external decoder */
                        num-cs = <4>;
                        fifo-depth = <128>;
+                       sram-size = <128>;
                        bus-num = <2>;
                        status = "disabled";
                };
 
                        ext-decoder = <0>; /* external decoder */
                        num-cs = <4>;
                        fifo-depth = <256>;
+                       sram-size = <256>;
                        bus-num = <0>;
                        status = "okay";
 
 
        plat->tsd2d_ns = fdtdec_get_int(blob, subnode, "tsd2d-ns", 255);
        plat->tchsh_ns = fdtdec_get_int(blob, subnode, "tchsh-ns", 20);
        plat->tslch_ns = fdtdec_get_int(blob, subnode, "tslch-ns", 20);
+       plat->sram_size = fdtdec_get_int(blob, node, "sram-size", 128);
 
        debug("%s: regbase=%p ahbbase=%p max-frequency=%d page-size=%d\n",
              __func__, plat->regbase, plat->ahbbase, plat->max_hz,
 
        u32             tsd2d_ns;
        u32             tchsh_ns;
        u32             tslch_ns;
+       u32             sram_size;
 };
 
 struct cadence_spi_priv {
 
 
 #define CQSPI_FIFO_WIDTH                       (4)
 
-/* Controller sram size in word */
-#define CQSPI_REG_SRAM_SIZE_WORD               (128)
-#define CQSPI_REG_SRAM_PARTITION_RD            (CQSPI_REG_SRAM_SIZE_WORD/2)
 #define CQSPI_REG_SRAM_THRESHOLD_WORDS         (50)
 
 /* Transfer mode */
        writel(0, plat->regbase + CQSPI_REG_REMAP);
 
        /* Indirect mode configurations */
-       writel(CQSPI_REG_SRAM_PARTITION_RD,
-              plat->regbase + CQSPI_REG_SRAMPARTITION);
+       writel((plat->sram_size/2), plat->regbase + CQSPI_REG_SRAMPARTITION);
 
        /* Disable all interrupts */
        writel(0, plat->regbase + CQSPI_REG_IRQMASK);